Jon*_*ona 5 android android-widget
我最初在Activity onCreate()中创建我的片段.比起我创建ViewPager和设置适配器.我保留了对片段的全局引用,以便我可以根据需要更新它们.此外,适配器访问这些片段.
我的问题是,我注意到一旦屏幕旋转,Fragments会重新创建,但ViewPager仍然包含创建的原始片段......
我怎么处理片段的生命周期?我需要能够直接调用活动中的片段.片段的单例是一个好主意吗?或者只是一个记忆泄漏者?
protected void onCreate (Bundle savedInstanceState)
{
...
...
// set up cards
mFrag1 = new Frag1();
mFrag1.setOnActionEventListener(mOnActionEvents);
mFrag2 = new Frag2();
mFrag3 = new Frag3();
mFragPager = (ViewPager) findViewById(R.id.vpPager);
mFragAdapter = new FragAdapter(getSupportFragmentManager());
mFragPager.setAdapter(mCardAdapter);
mFragPager.setOnPageChangeListener(mOnCardChange);
}
Run Code Online (Sandbox Code Playgroud)
全局实例和静态片段绝对是个坏主意.除非您调用setRetainInstance()片段,否则它将被序列化为Bundle并在重新创建父活动时重新创建(在屏幕旋转等).当然,这会生成新的片段实例,而旧的引用将无效.您应该FragmentManager.findFragmentById/Tag()根据需要获取对片段的引用,并且绝对不会将它们存储在静态变量中.
您可能需要显示更多代码,但只要您在onCreate() 引用中创建片段,就应该在活动的生命周期内有效.有关使用片段的更多信息,请查看兼容性库示例代码ViewPager.
| 归档时间: |
|
| 查看次数: |
4527 次 |
| 最近记录: |