我看过一些类似于我的问题的帖子,最相似的问题在这里:Strange onPause(), onResume() behaviour in fragments
我正在使用FragmentPagerAdapter创建标签片段。 我有3个片段A,B和C.
这是我的FragmentPagerAdapter实现:
public class TabsPagerAdapter extends FragmentPagerAdapter {
private static final int TOTAL_TABS = 3;
public TabsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int index) {
switch (index) {
case 0:
// Top Rated fragment activity
return new ImageFragment();
case 1:
// Games fragment activity
return new CameraFragment();
case 2:
// Movies fragment activity
return new WebFragment();
}
return null;
}
@Override
public int getCount() {
// get item count - equal to number of tabs
return TOTAL_TABS;
}
@Override
public int getItemPosition(Object object) {
return super.getItemPosition(object);
}
}
我希望有人能帮我解释一下我片段的行为
答案 0 :(得分:1)
- 当应用程序启动时,我看到片段A和B onCreateView()调用。
ViewPagerAdapter的用途是,它将始终实例化当前可见的项目旁边的项目。
当您启动App时,适配器将创建A和B.B将始终只有3个选项卡可用。
答案 1 :(得分:1)
TabView-切换选项卡后,第一次就不会调用onResume,那么您必须使用setUserVisibleHint来执行更新/刷新之类的操作
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
}
答案 2 :(得分:0)
我想您正在使用Action Bar,您所描述的是适配器的正常行为:当需要显示片段时,列表中的下一个片段将被预加载(默认情况下,但您可以改变这个)。 所以一开始你需要A,所以它只会加载B,因为左边没有任何东西' A,当你切换到B时,只有C片段会被预加载,因为A已经存在,最后当你去C时,适配器不需要预加载任何东西,因为什么都没有&# 39;在右边' C和它已经有B。
希望它有所帮助。