Intereting Posts
В чем смысл этого в Eclipse: «Путь к проекту должен иметь только один сегмент». Каков наилучший способ применить маску к EditText на Android? Android, найти все места в коде для запроса разрешений Запустить приложение из панели уведомлений в android Получить элемент андроида: versionName в коде Как настроить настраиваемую строку заголовка TextView Динамически динамически в Android? Android MVP с кинжалом 2 – Активность с несколькими фрагментами Добавить вложенный фрагмент после просмотра родительского фрагмента Android Crashlytics ndk; Значения NdkOut и NdkLibsOut в build.gradle Почему мой проект Xamarin.Android не будет создан с помощью Proguard: «java.exe» вышел с кодом 1 Портирование ОС Firefox на Android-устройство Какие ошибки обнаруживаются в «сборке» в Android Studio – роль Gradle Android.content.res.Resources $ NotFoundException: Идентификатор ресурса строки # 0x1 Ошибка Несколько диспетчеров загрузки файлов в режиме просмотра списка + прогресс / пауза / возобновление Изменение цвета текста панели приложений Google Place Picker

Фрагменты. Нужно ли использовать обертыватель активности вокруг фрагмента, который включает всю активность?

Рассмотрим пример приложения от developers.android.com

Это описывает использование таких фрагментов:

  • На телефоне вы можете использовать фрагмент 1 в действии A и фрагмент 2 для операции B.
  • На планшете у вас больше недвижимости, поэтому вы используете фрагмент 1 и фрагмент 2 на мероприятии А.

Большой! … Но … В первом примере (с телефоном) вы создаете Activity с xml-файлом, содержащим единственный <fragment> и все, в этом setContentView() вы вызываете только setContentView() на этом xml? Это похоже на много избыточного кода (Activity, XML & Fragment для отображения фрагмента). Можете ли вы установить Fragment как Activity или всегда требуется Wrapper с XML?

Solutions Collecting From Web of "Фрагменты. Нужно ли использовать обертыватель активности вокруг фрагмента, который включает всю активность?"

Ах, нашел это здесь

 public class MainMenuHolder extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // If not already added to the Fragment manager add it. If you don't do this a new Fragment will be added every time this method is called (Such as on orientation change) if(savedInstanceState == null) getSupportFragmentManager().beginTransaction().add(android.R.id.content, new MainMenuFragment()).commit(); } } 

FragmentActivity позволяет вам установить Фрагмент как содержимое android.R.id.content который, как я полагаю, является внутренним идентификатором андроида внутреннего вида сундука.

С помощью этого метода вы по-прежнему оказываете преимущественно избыточную активность (если все, что вам нужно, это Фрагмент, действующий как Activity). Но все же, вдвое меньше пуха, чем работа и файл XML, действующий как контейнер.

Любые другие ответы будут оценены!

В онлайн-примере не заполняются все пробелы. Я постараюсь ответить на ваши вопросы напрямую:

«В первом примере (с телефоном) вы должны создать Activity с xml-файлом, содержащим сингл и действие, которое вызывает только вызов setContentView () в этом xml, и все?»

Вы начали работу в нужном месте. Но есть нечто большее, чем это. Всегда существует несколько способов решения проблемы на Android, но рекомендуется использовать способ генерации динамического количества фрагментов на основе avail. Недвижимость:

  1. Создание макетов XML-файлов в / макет для первичной (по умолчанию) целевой ориентации / устройства / форм-фактора / SDK
  2. Создайте XML-файлы формата для минимальной базовой линии для других целевых устройств. Вы также можете настроить таргетинг на другие ориентации, SDK и т. Д.
  3. Каждый XML-файл макета будет иметь собственный набор определенных фрагментов
  4. В Управлении проверьте, какие фрагменты присутствуют.

Очевидно, что аналогичная стратегия может быть принята для программных макетов.

В вашем примере в исходном вопросе (из документов Google) вы можете:

  • Layout / main.xml :: в этом макете будет только фрагмент 1
  • Layout-sw600dp / main.xml :: в этом макете будут фрагменты 1, 2

Затем в MainActivity.java вы должны проверить наличие каждого фрагмента. Для этого вы можете использовать FragmentManager # findFragmentById () для проверки: если findFragmentById () возвращает null для Fragment-2, то MainActivity знает, что устройство загрузило layout / main.xml и поддерживает только один фрагмент.

Вывод «назад» из примера несколько показывает, что: до использования фрагментов вы могли бы вызвать Activity B из Activity A с startAcitityForResult (int). В парадигме фрагмента вы, вероятно, должны только иметь результат из фрагмента 2, чтобы что-то произошло во Фрагменте 1, поэтому разумно, чтобы MainActivity был гейткипером для этого. По мере расширения на примере вы можете увидеть, что в других приложениях MainActivity, возможно, потребуется вызвать другие действия – по какой-либо причине. Возможно, вы нацеливаете большой планшет с достаточным количеством недвижимости на 3 фрагмента, но на телефоне, который должен быть 3-мя действиями. Все может стать интересным, но API-интерфейс Fragment достаточно мощный.

«Можете ли вы установить Фрагмент в качестве действия или требуется, чтобы обертка использовалась при использовании фрагментов?»

Фрагмент не является активностью. Действительно, фрагменты загружаются в действия, поэтому да можно сказать, что всегда требуется оболочка. Вы касаетесь другого тонкого аспекта Фрагментов. Принимая во внимание, что действия ведут себя как MVC-контроллеры, фрагменты можно назвать «мини-контроллерами» из-за их жизненного цикла, которые похожи и выполняются вместе с Activity. Опять же, жизненный цикл Фрагмента содержится внутри («завернутый») жизненным циклом Activity, управляющего фрагментом. Я рекомендую ознакомиться с жизненным циклом фрагмента, зарегистрированным по адресу http://developer.android.com/guide/topics/fundamentals/fragments.html#Lifecycle .