【问题标题】:What's calling method when Fragment Display in ViewPagerViewPager中显示片段时调用方法是什么
【发布时间】:2013-03-25 15:08:39
【问题描述】:

我的 viewPager 有 5 个 ListFragment。

当列表项被选中时,转到 DetailFragment。

返回后,自动滚动记录在Listview上的位置。

autoScroll方法是这样的,这个在onStart()中调用;

getListView.setSelection(position);

但这有问题。

ViewPager 在 Fragment1 时创建 Fragment2。

当 Fragment2 尚未显示时,Fragment2 调用 onStart()。

所以,Fragment2 会滚动到最后一个位置,但显示的 Fragment 还是 Fragment1。

因此,App 因异常而崩溃。

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) 完全显示片段。

请帮忙。

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    首先你为 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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-01
      • 2023-03-03
      • 1970-01-01
      • 2015-10-16
      • 2016-03-02
      相关资源
      最近更新 更多