私は次の単純なものを使用していますFragmentStatePagerAdapter
。断片の 1 つへの参照を取得したいのですが、断片が破棄されている可能性があることに注意してください。
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;
}
}
この質問を見ました。2 番目の回答では、呼び出し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)
。