FragmentPagerAdapter会自动恢复视图状态吗?

时间:2017-01-11 07:19:48

标签: android fragment

我有一个带有FragmentPagerAdapter的ViewPager。 ViewPager有很多页面,当我滑动它时,片段的一些方法将被调用。 我在'onCreateView'中创建了一个新视图,并在'onActivityCreated'中初始化数据。 但同样如同视图将在重新创建时自动恢复其状态。

我的意思是:寻呼机有4页。我将列表视图滚动到第1页的底部,然后我将传呼机滑到第四个,然后我将它滑到第一个。列表视图显示在底部。但实际上listview是一个新的。为什么呢?

代码:

class MyFragment extends Fragment{
    View onCreateView(){ 
        ListView listview=new ListView();
        return listview;
    }

    void onActivityCreated(){
        List list=getdata();
        listview.setAdapter(new Adapter(list));
    }
}

btw:我没有在片段中保存视图。     我不调用ViewPager.setOffscreenPageLimit()。     我在onCreateView中创建了一个新视图。     我在onActivityCreated中创建了一个新的适配器。

那么为什么listview会自动定位到底部(我最后一次滚动到的位置)?

我在Fragment或FragmentPagerAdapter中找不到任何代码。

1 个答案:

答案 0 :(得分:0)

在FragmentManagerImpl中,有一个名为moveToState的方法,当片段移出时,它会调用saveFragmentViewState()方法," saveHierarchyState"将调用片段视图的方法,因此状态由片段保存并保留。片段管理器将自动恢复它。