我发现了一个非常奇怪的行为查看寻呼机。在使用FragmentPagerAdapter时,我观察到getItem()的调用顺序正确,即位置0、位置1、位置2......但onCreateView()的调用顺序相反,即位置2、位置1、位置0。(假设viewpager维护3个屏幕外页面)我认为,viewpager维护了一堆这些片段。当需要创建视图时,它从堆栈中弹出顶部最活跃的片段,并使其调用onCreateView()。
所以我的问题是我们能控制onCreateView()的调用顺序吗?如果不是,我可以对调用onCreateView()时发出的网络请求进行排序吗,这样片断0的网络请求应该首先执行,然后是片断1,然后是片断2。但我认为这会产生另一个问题,因为我是在网络请求完成后执行与UI相关的任务的,如果到现在为止还没有调用onCreateView(),那么UI元素可能不会初始化。那么什么是最好的方法来使这些网络调用按正确的顺序进行,即对于片段0,然后是1,然后是2,等等....
由于onCreateView()是一个生命周期方法--我不认为您可以“修改顺序”--相反,您应该围绕片段/活动生命周期概念化您的设计,以便您知道何时应该做什么。同样就执行UI相关任务而言,您应该在OnActivityCreated
中执行该操作。创建宿主活动时,在OnCreateView()
方法之后调用此方法。活动和片段实例以及活动的视图层次结构已经创建。此时,可以使用findViewById()
方法访问视图。
在您的情况下,如果要执行某些UI操作,请执行以下操作(对于每个片段
:
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
View rooView = getView();
//here you can do your UI related tasks
}
就创建片段的顺序而言,请遵循这里的讨论,因为它们处理的用例与您的用例密切相关。
我正在使用带有片段的FragmentPagerAdapter。我的问题是,当我调用setCurrentItem时,正在加载的片段的OnCreateView方法被调用两次。但是,需要注意的是,片断不是重新创建的,而是简单地恢复的。我非常想找到一个解决方案,使OnCreateView只能被调用一次。 两次调用Android oncreateview OnCreateView多次调用/使用ActionB
我使用在之间切换,但是我可以使用在简单XML布局之间切换吗? 这是ViewPager的页面,用于在片段之间滑动: 这是我的提示片段: 如何修改代码以使用视图而不是片段?
问题内容: 假设我的web.xml中有以下内容 如果请求以/XYZ/abc.do的形式出现,过滤器的调用顺序是什么?为什么? 问题答案: 按照其映射在web.xml中定义的顺序 如果使用注释(),则顺序似乎未定义 -您仍必须在web.xml中声明条目。
当我在viewPager中从其相邻片段(0,2)中滑动到或选择Fragment1(片段编号为0-3)时,它的onCreateView或onCreate函数未被调用。 但是当我从Fragment3回扫或者选择Fragment1(当Fragment3是活动的)时,这两个函数都被调用了。我很困惑为什么不从相邻的片段中调用它。 这是未正确调用onCreateView的片段的代码 //Toast.MakeT
Android片段找不到ID的视图? 找不到id 0x7F090005的视图 找不到片段id的视图 你能告诉我我做错了什么吗?