我想从FragmentPagerAdapter
我做的是,
padap = new MyPagerAdapter(getSupportFragmentManager());
public class MyPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments;
public MyPagerAdapter(FragmentManager fm) {
super(fm);
Log.e("MyPagerAdapter","inside MyPagerAdapter");
this.fragments = new ArrayList<Fragment>();
fragments.add(new FragmentBlue());
// fragments.add(new FragmentPink());
}
public Fragment getFragment(int position) {
return fragments.get(position);
}
在onCreate中,在将pageradapter设置为viewpager后,我使用getFragment
方法获取实例
mPinkFragment = padap.getFragment(1);
这会将第二个片段FragmentPink返回到global variable mPinkFragment
问题是,在几秒钟后说3秒空闲,如果我检查(使用runnable postDelayed)
if(mPinkFragment == null){
Log.e(TAG,"mPinkFragment is null, trying from adapter");
mPinkFragment = padap.getFragment(1);
if(mPinkFragment == null)
Log.e(TAG,"Still null");
}
我看到mPinkFragment is null, trying from adapter
但不是Still null
。
同样适用于访问PinkFragment成员的任何地方。
我的问题
1)如何保留对象实例?我需要使用WeakReference吗?如果是的话,我该怎么办?
2)如果我添加新片段,使用getFragmentManager.beginTransaction调用来自MAinActivity的FragmentGreen,是否会将其添加到viewpagerAdapter的片段列表中?
提前致谢!