Hi!
I'm using a ViewPager to swipe "between screens". One of the fragments is
composed of two fragments, so the hierarchy looks like:
ViewPager -> FragmentStatePageAdapter - > [Frag1, Frag2, Frag3], where
Frag1's layout is composed of two FrameLayouts, to which two fragments are
added like this:
if (savedInstanceState != null) {
FragmentManager supportFragmentManager =
getActivity().getSupportFragmentManager();
_computerListFragment = (ComputerListFragment)
supportFragmentManager.findFragmentByTag(LIST_FRAGMENT);
if (_computerListFragment != null) {
_computerListFragment.setOnComputerSelectedListener(this);
}
_computerDetailsFragment = (ComputerDetailsFragment)
supportFragmentManager.findFragmentByTag(DETAILS_FRAGMENT);
if (_computerDetailsFragment != null) {
_computerDetailsFragment.setOnComputerDetailsClickListener(this);
}
return root;
}
_computerListFragment = new ComputerListFragment();
FragmentManager supportFragmentManager =
getActivity().getSupportFragmentManager();
FragmentTransaction transaction =
supportFragmentManager.beginTransaction();
transaction.add(R.id.computer_list_fragment, _computerListFragment,
LIST_FRAGMENT);
if (_isDualPane) {
_computerDetailsFragment = new ComputerDetailsFragment();
_computerDetailsFragment.setOnComputerDetailsClickListener(MainComputerFragment.this);
transaction.add(R.id.computer_details_fragment, _computerDetailsFragment,
DETAILS_FRAGMENT);
}
transaction.commit();
This works well for orientation changes, the fragments get recreated
appropriately and onSaveInstanceState gets called for inner fragments
(above: ComputerListFragment and ComputerDetailsFragment), but when using
ViewPager, I see that:
1) onSaveInstanceState is called on the First fragment, but not on the
inner fragments (in above case, for ComputerListFragment and
ComputerDetailsFragment)
2) trying to call
getActivity().getSupportFragmentManager().saveFragmentInstanceState(_computerListFragment);
yields NullPointerException
in
android.support.v4.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManager.java:1588)
3) if I try to to add them again, I get an IllegalStateException that the
fragment is already added (makes sense)
It seems to me that I need to tell the fragmentManager that it should save
the fragment states, and then to restore them, but I see no appropriate
methods for this. It also seems to me that I would need to tell the
fragmentManager to show the fragments, since ViewPager obviously removes
them somehow...
Or have I got it backwards somehow?
Regards,
Miha.
ps: I was using ChildFragmentManager at first, but then switched to
FragmentManager due to issue I was having. Could this be the case?
--
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
---
You received this message because you are subscribed to the Google Groups
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.