[英]Fragment's are not calling OnResume() when swiping with ViewPager
[英]What's calling method when Fragment Display in ViewPager
我的viewPager有5个ListFragment。
当选择列表项时,转到DetailFragment。
返回后,autoScroll在Listview上记录位置。
autoScrooll方法是这样的,这在onStart()中被调用;
getListView.setSelection(position);
但这有问题。
ViewPager在创建Fragment1时创建Fragment2。
当Fragment2尚未显示时,Fragment2和onStart()调用。
因此,Fragment2将滚动到最后一个位置,但显示的Fragment仍为Fragment1。
因此,应用程序因异常而崩溃。
03-22 09:39:23.711: E/AndroidRuntime(15404): java.lang.IllegalStateException: Content view not yet created
03-22 09:39:23.711: E/AndroidRuntime(15404): at android.support.v4.app.ListFragment.ensureList(ListFragment.java:328)
03-22 09:39:23.711: E/AndroidRuntime(15404): at android.support.v4.app.ListFragment.getListView(ListFragment.java:222)
因此,我只想完全显示片段仅调用getListview.setSelection(position)。
请帮忙。
首先,您为Activity实现OnPageChangeListener。 之后,您将处理使用这些功能的ListFragments,
public void onPageScrollStateChanged(int arg0)
{
}
public void onPageScrolled(int arg0, float arg1, int arg2)
{
}
public void onPageSelected(int position)
{
if(position==0)
((ListFragment1)mPagerAdapter.getItem(position)).updateView();
//onUpdateView is a user defined public function on ListFragment that works what you need
else if(position==1)
((ListFragment2)mPagerAdapter.getItem(position)).updateView();
else if(position==2)
((ListFragment3)mPagerAdapter.getItem(position)).updateView();
else if(position==3)
((ListFragment4)mPagerAdapter.getItem(position)).updateView();
else if(position==4)
((ListFragment5)mPagerAdapter.getItem(position)).updateView();
}
然后在每个ListFragments内编写onUpdateView()的正文
public void onUpdateView()
{
getListView.setSelection(position);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.