我可能不能完全明白你的代码,但我怀疑你的MainActivity的onCreate该位:
frAdapter = new FragmentAdapter(getSupportFragmentManager());
vPager = (ViewPager)findViewById(R.id.pager);
vPager.setAdapter(frAdapter);
vPager.setCurrentItem(1);
vPager.setOnPageChangeListener(this);
vPager.setOffscreenPageLimit(3);
认为你应该保存CURRENTITEM在onSaveInstance和retrive它:
vPager.setCurrentItem(value_before_orientation_change);
不是100%肯定,如果尽管我怀疑vPager实际上会覆盖你的片段。
编辑:
更可能的是,在onActivityCreated你CenterPanelFragment.java您提交的目录:
fragmentTransaction.replace(R.id.fragment_container, fragmentCatalog);
fragmentTransaction.addToBackStack("FragmentCatalog");
fragmentTransaction.commit();
或许真的如setRetainInstance(真)在的onCreate简单的CenterPanelFragment可以解决此问题。
我相当有信心,方向更改重新启动您的CenterPanelFragment,导致一个新的调用onActivityCreated。
认为你可以在你的FragmentCatalog尝试:
而改变这一行:
fragmentTransaction.replace(R.id.fragment_container, fcAllStone);
于:
fragmentTransaction.replace(R.id.fragment_container, fcAllStone, "fragment_stone");
现在CentralPanelFragment:
if (savedInstanceState != null)
{
Log.d(MainActivity.tag, "CenterPanelFragment not null");
fragmentCatalog = (FragmentCatalog)getFragmentManager().getFragment(savedInstanceState, FragmentCatalog.class.getName());
// see if stone is open
if (savedInstanceState != null) {
FragmentCatalogStone fragmentStone = (FragmentCatalogStone) getFragmentManager()
.findFragmentByTag("fragment_stone");
if (FragmentCatalogStone != null) {
/*
* maybe recommit it, dont actually think anything is needed
* since moving the below code inside the else statement
* prevents it from overwriting the FragmentCatalogStone
*/
}
}
else
{
Log.d(MainActivity.tag, "CenterPanelFragment null");
fragmentCatalog = new FragmentCatalog();
android.support.v4.app.FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
fragmentTransaction.replace(R.id.fragment_container, fragmentCatalog);
fragmentTransaction.addToBackStack("FragmentCatalog");
fragmentTransaction.commit();
}
这是一种不好的做法..如果您有两种不同的布局,每种布局都有一种布局,则不会重新创建活动,布局也不会更改。 – ovluca