是否可以保留为某个片段创建的每个片段的实例?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);
}
}
我会遇到内存问题吗?
这个想法是做类似的事情MyFragmentPagerAdapter.fragment0
为了获得对片段的引用。
这种方法的问题在于FragmentManager
即使您维护引用,也可能会创建片段的新实例。在这种情况下,同一片段的多个实例将位于内存中(泄漏),并且您维护的引用的目标甚至可能不会显示。换句话说,这是不安全的。
然而,安全的是在片段中维护您的活动的引用。
在你的片段中你重写
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
home = (YourFragmentActivity) activity;
}
public void onCreate(Bundle savedInstanceState) {
home.setThisFragTag(getTag());
}
在你的 FragmentActivity 中
public void ThisFragTag(String tag) {
this.fragTag = tag;
}
现在,在您的活动中,您可以获取当前显示的片段实例
(YourFragmentClass) getSupportFragmentManager().findFragmentByTag(fragTag);
您可以对多个片段重复此操作
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)