Héc*_*ena 3 android android-fragments fragmentpageradapter
是否可以保留为FragmentPagerAdapter内部创建的每个片段的实例FragmentPagerAdapter?
像这样的东西:
@Override
public Object instantiateItem(ViewGroup container, int position)
switch(position){
case 0:
fragment0 = super.instantiateItem(container, position);
return fragment0;
case 1:
fragment1 = super.instantiateItem(container, position);
return fragment1;
default:
return super.instantiateItem(container, position);
}
}
Run Code Online (Sandbox Code Playgroud)
我会遇到内存问题吗?
这个想法是MyFragmentPagerAdapter.fragment0为了获得对片段的引用.
该方法的问题在于FragmentManager即使您维护引用,也可能创建片段的新实例.在这种情况下,同一个片段的几个实例将在内存中(泄漏),并且您维护的引用将以可能甚至不显示的实例为目标.换句话说,它不安全.
然而,安全的是在片段中保持活动的参考.
在您的片段中,您覆盖
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
home = (YourFragmentActivity) activity;
}
public void onCreate(Bundle savedInstanceState) {
home.setThisFragTag(getTag());
}
Run Code Online (Sandbox Code Playgroud)
在你的FragmentActivity中
public void ThisFragTag(String tag) {
this.fragTag = tag;
}
Run Code Online (Sandbox Code Playgroud)
现在,在您的活动中,您可以暂停当前显示的片段实例
(YourFragmentClass) getSupportFragmentManager().findFragmentByTag(fragTag);
Run Code Online (Sandbox Code Playgroud)
您可以对多个片段重复此操作
| 归档时间: |
|
| 查看次数: |
2771 次 |
| 最近记录: |