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