gut*_*ory 12 android fragment screen-orientation android-viewpager
我有一个FragmentActivity和一个处理2个碎片的ViewPager.
Run Code Online (Sandbox Code Playgroud)public class MyFragmentActivity extends 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); } }
我的问题是每次屏幕方向改变时,都会创建活动以及碎片.我不介意再次创建活动,但我不希望重新创建碎片.
PSc*_*tte 14
最简单的方法是if
在调用on create方法后立即抛出一个语句,然后检查你是否已经有了一些东西.如果savedInstanceState
不为null,则不需要执行任何操作:
if (savedInstanceState == null){
// do whatever
} else {
// dont do anything
}
Run Code Online (Sandbox Code Playgroud)
(这个答案更适合那些偶然发现这个问题的人,因为他们无法弄清楚为什么每次他们转动设备时都会重新添加片段)
将 FragmentAdapter 保存在 onSaveInstanceState 中,并在使用 onRetainNonConfigurationInstance 进行配置更改后将其返回到 Activity,以便片段在方向更改后仍能幸存。
归档时间: |
|
查看次数: |
38203 次 |
最近记录: |