如何在android中获取ViewPager的FragmentStatePagerAdapter片段

如何在android中获取ViewPager的FragmentStatePagerAdapter片段,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,如果我的问题有任何含糊不清的地方,那么请评论。这个问题真的更糟,我不能比这更好地表达它 我的应用程序中有此设计格式- 活动->片段->查看页面(嵌套片段) 在Fragment的onCreate方法中,我使用AsyncTask加载了一个长列表。在AsyncTask的onPostExecute()中,我将适配器分配给viewPager 第一点->我用这种方法创建了寻呼机的列表片段——我将整个列表分成10个项目的小列表片段 为了适应屏幕定向,我在Fragment的onCreate()中使用了setRe

如果我的问题有任何含糊不清的地方,那么请评论。这个问题真的更糟,我不能比这更好地表达它

我的应用程序中有此设计格式-

活动->片段->查看页面(嵌套片段)

在Fragment的onCreate方法中,我使用AsyncTask加载了一个长列表。在AsyncTask的onPostExecute()中,我将适配器分配给viewPager

第一点->我用这种方法创建了寻呼机的列表片段——我将整个列表分成10个项目的小列表片段

为了适应屏幕定向,我在Fragment的onCreate()中使用了setRetainInstance(true)。规则说父片段还保留子片段。当第一次加载活动时,FragmentStatePagerAdapter的getItem()会被调用两次,因为它在运行中创建了两个片段(第一页和第二页)

现在,当我旋转屏幕时,由于setRetainInstance(true),父片段的onCreate()没有被调用。因此,列表不会再次加载,以前加载的列表保持不变。但是,我的屏幕变得完全空白(应用程序不会崩溃)

FragmentStatePagerAdapter的getItem()甚至没有调用一次,因为ChildfragmentManager存储已创建片段的实例(对吗?)。在父片段的onActivityCreated()中,我再次将适配器分配给viewPager

我的问题是为什么我的屏幕是空的,为什么不调用getItem?如果它没有被调用,那么我如何检索已经创建的viewPager片段

第二个问题很奇怪-在旋转屏幕后,指示灯仍然显示,但当我从第2页滑动到第3页时,应用程序崩溃,可能是因为childFragmentManager没有存储该页。但是在这种情况下调用了getItem()。如何处理

相关代码为->

活动-内部onCreateMethod

if(savedInstanceState==null){

        FragmentManager manager = getSupportFragmentManager();
        FragmentTransaction transaction = manager.beginTransaction();

        Bundle bundle = new Bundle();
        bundle.putString("NAME", NAME);
        bundle.putInt("VALUE", VALUE);
        bundle.putString("CATEGORY_ID", CATEGORY_ID);
        QuestionFragment fragobj = new QuestionFragment();
        fragobj.setArguments(bundle);
        transaction.replace(R.id.questions, fragobj);
        transaction.commit();
    }  
ParentFragment->inner onCreate()

内部onActivityCreated()->

FragmentStatePagerAdapter()->

ArrayListFragment——我正在使用从外部服务器下载的列表形成这些列表,并将这些列表分成几个小列表,每个列表包含10项


真的很紧急。我根本想不出来。如何处理寻呼机片段的屏幕旋转?

您找到解决问题的方法了吗。我也面临同样的问题
@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setRetainInstance(true);
    AsyncTask.execute();}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onActivityCreated(savedInstanceState);

    mPager = (ViewPager) getView().findViewById(R.id.pager);
    mIndicator = (CirclePageIndicator) getView().findViewById(R.id.indicator);

    mPager.setAdapter(mAdapter);
    mIndicator.setViewPager(mPager);}
public class MyAdapter extends FragmentStatePagerAdapter {
    public MyAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public int getCount() {
        Log.v("Akshat","QuestionFragment - Inside getCount Method MyAdapter");
        return NUM_ITEMS;

    }

    @Override
    public Fragment getItem(int pos) {
        Log.v("Akshat","QuestionFragment - Inside getItem Method MyAdapter");
        return ArrayListFragment.newInstance(pos);
    }
}