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.


Reply via email to