Java 每当选择相邻选项卡时,是否调用选项卡的onCreateView?
我遇到了一个奇怪的问题,每当我导航到我的Java 每当选择相邻选项卡时,是否调用选项卡的onCreateView?,java,android,view,tabs,android-tablayout,Java,Android,View,Tabs,Android Tablayout,我遇到了一个奇怪的问题,每当我导航到我的TabLayout中的相邻选项卡时,都会调用onCreateView。这是我的密码: news_feed.java: private static TabLayout tabLayout; @Override public void onCreate(Bundle savedInstanceState) { tabLayout = (TabLayout) findViewById(R.id.tab_layout); tabLayout.a
TabLayout
中的相邻选项卡时,都会调用onCreateView
。这是我的密码:
news_feed.java:
private static TabLayout tabLayout;
@Override
public void onCreate(Bundle savedInstanceState) {
tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.addTab(tabLayout.newTab().setText("Public"));
tabLayout.addTab(tabLayout.newTab().setText("Friends"));
tabLayout.addTab(tabLayout.newTab().setText("My Tabs"));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
final PagerAdapter adapter = new PagerAdapter
(getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
PublicTab.java:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
System.out.println("Creating a new view");
fragmentView = inflater.inflate(R.layout.public_tab, container, false);
progressOverlay = fragmentView.findViewById(R.id.progress_overlay);
AndroidUtils.animateView(progressOverlay, View.VISIBLE, 0.9f, 200);
getPublicPosts(progressOverlay, fragmentView);
return fragmentView;
}
我还有另外3个选项卡,它们看起来非常像PublicTab.java
,但布局不同。我不知道为什么会如此频繁地调用onCreateView
。我认为在生命周期中,onCreateView
的调用只有两个原因:
1.当我们第一次初始化选项卡时
2.如果我们从onStop
或onPause
方法出来
但是,当在实际选项卡旁边的选项卡之间切换时,会像上面一样调用println
消息,这不是我想要的,因为我不想如此频繁地更新该片段的视图
:仅在上面的前两个原因期间。有人知道为什么会这样吗?任何帮助都将不胜感激!谢谢 使用setoffScreenPageLimit
Android文档:
public void setOffscreenPageLimit(整数限制)
设置应保留到页面两侧的页数
视图层次结构中处于空闲状态的当前页面。除此之外的页面
需要时,将从适配器重新创建限制
默认值设置为1
使用setoffScreenPageLimit
Android文档:
public void setOffscreenPageLimit(整数限制)
设置应保留到页面两侧的页数
视图层次结构中处于空闲状态的当前页面。除此之外的页面
需要时,将从适配器重新创建限制
默认值设置为1
首先也是最重要的是,Viewpager的默认工作属性是。 如果您有大约十个选项卡,并且您选择了第二个选项卡 viewpager将创建选项卡2、选项卡1和选项卡3。这样可以在ViewPager之间提供平滑的导航。所以无论您做什么,oncreate视图都会被调用,因为它每次都会重新创建片段 您可以做的一件事是,如果您不想在每次创建选项卡后重新访问选项卡时进行网络呼叫/或从联机获取数据 你可以这样做 在TabLayout活动中保存数据,使用接口创建setdata和getData方法 因此,每当它到达onCreateview时。检查get方法中是否还有任何数据,并将位置传递给该方法
如果存在,则显示该数据,否则进行网络呼叫 首先,Viewpager的默认工作属性是这个。 如果您有大约十个选项卡,并且您选择了第二个选项卡 viewpager将创建选项卡2、选项卡1和选项卡3。这样可以在ViewPager之间提供平滑的导航。所以无论您做什么,oncreate视图都会被调用,因为它每次都会重新创建片段 您可以做的一件事是,如果您不想在每次创建选项卡后重新访问选项卡时进行网络呼叫/或从联机获取数据 你可以这样做 在TabLayout活动中保存数据,使用接口创建setdata和getData方法 因此,每当它到达onCreateview时。检查get方法中是否还有任何数据,并将位置传递给该方法
如果存在,则显示该数据,否则进行网络呼叫 是否为每个选项卡片段打印不同的消息?我之所以问这个问题,是因为您可能将
offscreenPageLimit
设置为1,并且消息与您可能认为的不同选项卡相关。您是否为每个选项卡片段打印不同的消息?我之所以问这个问题,是因为您可能将offscreenPageLimit
设置为1,并且消息与您可能认为的不同的选项卡相关。您好,我完全理解您的方法,但我实际上使用的是Firebase,因此每次向我的方法添加数据时,数据都会自动异步添加到列表视图中。这有什么办法吗?或者只有当我的应用程序从onPause
/onStop
返回时,或者当我的应用程序只是第一次加载时,是否有任何方法可以简单地执行网络调用?嗨,我完全理解你的方法,但我实际上使用的是Firebase,因此每次向我的方法添加数据时,数据将自动异步添加到列表视图中。这有什么办法吗?或者只有当我的应用程序从onPause
/onStop
返回时,或者当我的应用程序只是第一次加载时,有没有办法简单地执行网络呼叫?我将尝试将此设置为3,并让您知道!我将尝试将此设置为3并让您知道!