这个问题已经有了答案:
ViewPager and fragments — what's the right way to store fragment's state?
10个答案
我有一个带有viewpager的fragmentactivity,它处理两个片段。
公共类MyFragmentActivity扩展了FragmentActivity{private Fragment f1;private Fragment f2;private ViewPager myPager;private MyFragmentAdapter mFragmentsAdapter;private static ArrayAdapter<Fragment> mFragmentArray;public void onCreate(Bundle icicle) { super.onCreate(icicle);setContentView(R.layout.my_layout);myViewPager = (ViewPager) findViewById(R.id.pager_acciones);mFragmentArray = new ArrayAdapter<Fragment>(getApplicationContext(),android.R.layout.simple_list_item_1);f1 = new Fragment(); f1 = new Fragment();mFragmentArray.add(f1);mFragmentArray.add(f2);mFragmentsAdapter = new MyFragmentAdapter(getSupportFragmentManager());myPager.setAdapter(mFragmentsAdapter);myPartidoPager.setCurrentItem(0);}public static class MyFragmentAdapter extends FragmentPagerAdapter { public AccionesFragmentAdapter(FragmentManager fm) { super(fm); } @Override public int getCount() { return mFragmentArray.getCount(); } @Override public Fragment getItem(int position) { return mFragmentArray.getItem(position); }}
我的问题是每次屏幕方向改变时,都会创建活动和片段。我不介意活动是否被再次创建,但我不希望片段被重新创建。
最佳答案
最简单的方法是在调用on create方法之后抛出一个if
语句,并检查其中是否已经有内容。如果savedInstanceState
不为空,则无需执行任何操作:
if (savedInstanceState == null){
// do whatever
} else {
// dont do anything
}
(这个答案更适合那些偶然发现这个问题的人,因为他们不明白为什么每次转动设备时都会添加碎片)
关于android - Android - fragment 屏幕旋转[复制],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9039877/