我有一个带有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" 方法会被调用,因此状态被片段保存并持有。片段管理器将自动恢复它。