Можете ли вы поместить фрагменты внутри фрагмента для вкладки на панели действий?
У меня есть приложение для 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
Я отвечаю за удаление этих встроенных фрагментовкогда фрагмент вкладки удаляется?Если да, то когда именно я это сделаю?