碎片寻呼适配器是否会自动恢复视图状态



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

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

代码:

class MyFragment extends Fragment{
    View onCreateView(){ 
        ListView listview=new ListView();
        return listview;
    }
    void onActivityCreated(){
        List list=getdata();
        listview.setAdapter(new Adapter(list));
    }
}

顺便说一句:I不要在我的片段中持有视图。 我不调用ViewPager.setOffscreenPageLimit()。 我在onCreateView中创建一个新视图。 我在onActivityCreated中创建一个新的适配器。

那么为什么列表视图可以自动定位到底部(我上次滚动到的任何位置)呢?

我在片段或片段PagerAdapter中找不到任何代码来执行此操作。

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

最新更新