Intereting Posts
Как мы можем оптимизировать (cpu & ram) эту андроидную пользовательскую анимацию всплеска? Добавление onclick в подменю? Vuforia против Metaio SDK против ARKit против D'Fusion Mobile против Layar SDK Знайте, получили ли приложение уведомление со стороны сервера Как уведомлять пользователей об обновлении Android-приложения? RecyclerView отображает удаленные данные в списке Android Предупреждение: JAR не существует или не содержит ресурсов Android Parse SDK i / o ошибка неизвестного формата (магия номер 227b) Android – Несколько, одновременное потоковое аудио Не удалось найти класс, на который ссылается метод android java.lang.NoClassDefFoundError Использование учетной записи Google в качестве входа в систему … что дальше? Определить, включен ли параметр доступности «Большой текст» на Android Почему диалоговое окно Android Android Alert BLACK? Android: в чем разница между сосредоточенными, включенными, нажатыми и выбранными состояниями? Как изменить стиль пользовательского счетчика в android

Фрагменты в фрагментах вкладки «Панель действий»?

Можете ли вы поместить фрагменты внутри фрагмента для вкладки в панели действий?

У меня есть приложение Android (3.0 / Honeycomb) с основным видом деятельности, в котором есть панель действий с 3 вкладками. Вкладки добавляются в метод onCreate () моей активности, а фрагменты вкладки добавляются / удаляются с помощью TabListener. Код почти идентичен образцу по адресу http://developer.android.com/guide/topics/ui/actionbar.html#Tabs .

TabListener выглядит так:

public class SwapOutTabListener implements ActionBar.TabListener { public SwapOutTabListener(Fragment fragment) { _fragment = fragment; } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { ft.add(R.id.fragment_container, _fragment, null); } @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { ft.remove(_fragment); } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { // do nothing } private Fragment _fragment; } 

Две мои вкладки – простые фрагменты, они просто содержат в себе один TextView, несколько похожий на это (большинство атрибутов удалены для ясности):

 <LinearLayout> <TextView android:text="Tab 1" /> </LinearLayout> 

Но фрагмент для одной из моих вкладок более сложный и содержит два встроенных фрагмента, вроде этого:

 <LinearLayout> <fragment android:name="...Fragment_1" android:id="@+id/frag1" /> <fragment android:name="...Fragment_2" android:id="@+id/frag2" /> </LinearLayout> 

Когда пользователь выбирает вкладку для этого фрагмента, все методы жизненного цикла запуска (onStart (), onResume ()) вызываются для всех трех фрагментов (фрагмент табуляции, а также два встроенных фрагмента).

Но когда пользователь выбирает другую вкладку, только фрагмент вкладки получает любой из методов конца жизненного цикла (onPause (), onStop () и т. Д.). Два встроенных фрагмента никогда не получают ни одного из этих вызовов и никогда не выключаются.

Это вызывает проблемы при повторном выборе вкладки, поскольку среда выполнения запрашивает дубликат идентификатора фрагмента при загрузке фрагмента вкладки:

 Binary XML file line #7: Duplicate id 0x7f05000a, tag null, or parent id 0x7f050009 with another fragment for ...Fragment_1 

Является ли моей обязанностью удалять эти внедренные фрагменты при удалении фрагмента вкладки? Если да, когда, собственно, я это делаю?

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

Аааа. Чувство осознания. Я просто нашел это – «Примечание: вы не можете раздувать макет во фрагмент, когда этот макет включает в себя. Вложенные фрагменты поддерживаются только при динамическом добавлении фрагмента».

http://developer.android.com/about/versions/android-4.2.html#NestedFragments