我正在使用以下简单方法FragmentStatePagerAdapter
,并且我想获得对其中一个片段的引用,请记住它们可能已被破坏。
public class MyStatePagerAdapter extends FragmentStatePagerAdapter {
private int count;
public MyStatePagerAdapter(FragmentManager fm, int count) {
super(fm);
this.count= count;
}
@Override
public Fragment getItem(int arg0) {
switch (arg0) {
case 0:
return MyFragment1.newInstance();
case 1:
return MyFragment2.newInstance();
default:
return null;
}
}
@Override
public int getCount() {
return count;
}
}
我看到了这个问题,它的第二个答案说如果你打电话FragmentStatePagerAdapter.instatiateItem
并且已经有对片段的引用,它就不会getItem()
再次调用。我在这里查看了源代码,据我了解,这确实是发生了什么。
但是,我想知道,我可以执行以下操作吗?它看起来很简单,但我没有看到它在任何地方使用的事实让我怀疑我看不到的东西确实是错误的。
所以基本上我的问题是:使用以下内容访问片段会出现什么错误?
public class MyStatePagerAdapter extends FragmentStatePagerAdapter {
private int count;
private MyFragment1 myFragment1;
private MyFragment2 myFragment2;
public MyStatePagerAdapter(FragmentManager fm, int count) {
super(fm);
this.count= count;
}
@Override
public Fragment getItem(int arg0) {
switch (arg0) {
case 0:
if (myFragment1 == null) {
myFragment1 = MyFragment1.newInstance();
}
return myFragment1;
case 1:
if (myFragment2 == null) {
myFragment2 = MyFragment2.newInstance();
}
return myFragment2;
default:
return null;
}
}
@Override
public int getCount() {
return count;
}
}
为了得到它,我会打电话给getItem(position)
.