Урок 115. Одно приложение на разных экранах

Обсуждение уроков
dassad
Сообщения: 8
Зарегистрирован: 20 дек 2015, 00:03

Re: Урок 115. Одно приложение на разных экранах

Сообщение dassad » 08 апр 2016, 18:14

надо сказать, урок не всем "подойдет".
мое приложение вообще написано с одним активити, а вся интеракция с пользователем - на фрагментах, открывающимися выше.
идея же данного урока - что основное активити - только для landscape а если нет - то как минимум 2 активити. Но язык не должен принуждать меня открывать активити если по дизайну это не подходит.

а писать код для одного активити для разных экранов - это уже отдельная задача, знаний из этой статьи не почерпнуть.

GRAF_COLLIOSTRO
Сообщения: 115
Зарегистрирован: 08 янв 2015, 14:32

Re: Урок 115. Одно приложение на разных экранах

Сообщение GRAF_COLLIOSTRO » 09 апр 2016, 04:21

есть такая проблема:

в приложении тупо листаются страницы с текстом. справочник такой) ну вот мне вообще фиолетово какой размер девайса: там две кнопки под текстом назад и вперёд. и на всю страницу заливается текст. выбор текста происходит через меню в уголке. всё. ничего другого там не предвидется.

текст обёрнут в scroll и на мелких экранах без проблем таскается.

У меня нет потребности ни во фрагментах ни в перевёрстывании под горизонталь или вертикаль. Всё достаточно топорно и просто.

Залил сие на плеймаркет. Он мне пишет что мол оно не оптимизировано под планшеты 7 и 10 дюймов и постоянно ругается на эту тему.

Как ему объяснить что на планшете оно прекрасно работает?

Bino
Сообщения: 2
Зарегистрирован: 01 апр 2017, 14:25

Re: Урок 115. Одно приложение на разных экранах

Сообщение Bino » 02 апр 2017, 19:56

Пробую реализовать этот урок и не получается... Когда я наследую

Код: Выделить всё

public class DetailsActivity extends Fragment
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
        if (getResources().getConfiguration().orientation
                == Configuration.ORIENTATION_LANDSCAPE) {
            finish();
            return;
        }
Функция finish(); у меня красная (не поддерживается). А когда наследую

Код: Выделить всё

public class DetailsActivity extends FragmentActivity{
      public static DetailsFragment newInstance(int pos){
           DetailsFragment details = new DetailsFragment();
           Bundle args = new Bundle();
           args.putInt("position", pos);
           details.setArguments(args);
           return details;
    }
То тогда функции setArguments(args) и getArguments() не поддерживаются. Подскажите как быть в таких случаях, когда нужны и те и другие функции, но наследоваться можно только от одного класса??

VladLerkin
Сообщения: 1
Зарегистрирован: 05 апр 2017, 07:18

Re: Урок 115. Одно приложение на разных экранах

Сообщение VladLerkin » 05 апр 2017, 07:53

Добый день!

В уроке 115 не говорится, что нужно регистрировать Activitity в манифесте, а без этого откомпилится, но детальный активити в отдельном окне окрываться не будет.

В Android Studio 2.3 есть одна особенность этого урока.

Если регистрировать класс DetailsActivity вручную в манифесте, то будет возникать ошибка при открытии данного активити (например, в вертикальной ориентации).

Поэтому класс DetailsActivity нужно обязательно добавлять через Визард в проект по правой кнопке New->Activity->Blank Activity и указывать layout = details. При добавлении с помощью Визарда, DetailActivity автоматически регистрируется в манифесте.
Добавить сразу с поддержкой библиотеки v4 через визард не получится. Поэтому я добавлял с CompactActivity (это support library v7), а потом прописывал в коде "Extendens от FragmentActivity" (т.е. менял на support library v4).

2. Еще особеность Android Studio в том, что нужно прописать версиию support library v4 в фийле Bild.Gradle приложения в разделе:
dependencies {
...
compile 'com.android.support:support-v4:22.2.1'
}
и потом обязательно нажать кнопку "Sync Project with Gradle Files" на панели инструментов, иначе файл настроками Gradle не вступит в силу.
Не забудьте поставить в том же файле targetSdkVersion 22, так как на более высоком не скомпилируется, а более поздняя версия Support Library v4 уже требует
minSdkVersion 14, а так на Support Library v4 22.2.1 можно, например, minSdkVersion 9 поставить.

Ответить