
DagobertDokate
Dauer-User
- 137
Hallo Leute,
Ich hab gerade ein Problem mit der Fragment Support Lib.
Ich hab als Hauptnavigation einen Liste in der Actionbar.
Jetzt wird aber bei der onNavigationItemSelected() durchläuft das erstellte Fragment die Anfänge des Lebenszyklus zwei mal. Dadurch ist es mir nicht möglich den State wieder herzustellen. Einmal wird es mit Bundle aufgerufen.. und dann sofort wieder mit eine Instanz mit leerem Bundle überschrieben.
Also jetzt meine Frage: Warum zum teufel durchläuft das GroupFragment zwei mal den Zyklus und wie verhinder ich das?
und hier noch die onViewCreated() vom GroupFragment die zwei mal aufgerufen wird.
mfg. Dagobert
Ich hab gerade ein Problem mit der Fragment Support Lib.
Ich hab als Hauptnavigation einen Liste in der Actionbar.
Jetzt wird aber bei der onNavigationItemSelected() durchläuft das erstellte Fragment die Anfänge des Lebenszyklus zwei mal. Dadurch ist es mir nicht möglich den State wieder herzustellen. Einmal wird es mit Bundle aufgerufen.. und dann sofort wieder mit eine Instanz mit leerem Bundle überschrieben.
Also jetzt meine Frage: Warum zum teufel durchläuft das GroupFragment zwei mal den Zyklus und wie verhinder ich das?
Code:
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
Log.d(TAG, "onNavigationItemSelected: " + itemPosition);
currentPos = itemPosition;
Fragment fragment;
String tag;
switch (itemPosition) {
case 1:
Log.d(TAG, "Create new GroupFragment");
fragment = new GroupFragment();
tag = GROUP_TAG;
break;
default:
fragment = new Fragment();
tag = "";
break;
}
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.container, fragment, tag);
ft.commit();
return true;
}
und hier noch die onViewCreated() vom GroupFragment die zwei mal aufgerufen wird.
Code:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Log.d(TAG, "onViewCreated");
FragmentManager fm = getChildFragmentManager();
groupSectionsPagerAdapter = new GroupSectionsPagerAdapter(fm, getActivity());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) getActivity().findViewById(R.id.pager);
mViewPager.setAdapter(groupSectionsPagerAdapter);
mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
currentPosition = position;
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {/* do nothing */ }
@Override
public void onPageScrollStateChanged(int arg0) { /* do nothing */ }
});
if (savedInstanceState != null) {
Log.d(TAG, "Restore state");
if(savedInstanceState.containsKey(SAVE_TAB_STATE)) {
currentPosition = savedInstanceState.getInt(SAVE_TAB_STATE);
Log.d(TAG, "Restore position: " + currentPosition);
}
} else {
Log.d(TAG, "Restore nothing");
}
mViewPager.setCurrentItem(currentPosition);
}
mfg. Dagobert