Android-新底部导航栏中的PageView-防止重新加载片段
在my StartActivity中,底部导航栏侦听器具有以下设置:Android-新底部导航栏中的PageView-防止重新加载片段,android,android-fragments,bottomnavigationview,fragment-oncreateview,Android,Android Fragments,Bottomnavigationview,Fragment Oncreateview,在my StartActivity中,底部导航栏侦听器具有以下设置: private GuideFragment guideFragment = new GuideFragment(); private MapFragment mapFragment = new MapFragment(); private MoreFragment moreFragment = new MoreFragment(); private BottomNavigationView.OnNavigationItemS
private GuideFragment guideFragment = new GuideFragment();
private MapFragment mapFragment = new MapFragment();
private MoreFragment moreFragment = new MoreFragment();
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = null;
switch (item.getItemId()) {
case R.id.navigation_guide:
selectedFragment = guideFragment;
break;
case R.id.navigation_map:
selectedFragment = mapFragment;
break;
case R.id.navigation_more:
selectedFragment = moreFragment;
break;
}
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.content, selectedFragment);
transaction.commit();
return true;
}
};
正如我上面提到的,我希望防止所选片段总是重新加载源代码/视图。
我尝试了一些东西,比如-在片段中:
if (rootView == null)
inflater.inflate...
但是片段仍然会重新创建视图并加载(在我的例子中)新的webresources
我读了一些网页浏览可以帮助我的东西,尤其是
offScreenPageLimit
我们应该变魔术
我的主要问题是我应该在哪里实现PageViewer——在我的StartActivity中是否可能?
或者我可以用其他方法解决这个问题吗?我做到了,孩子们!
不需要ViewPager
这是我的解决方案(所有代码都在StartActivity
中编码,而不是在Fragments
中编码):
并在onCreate列表中提交事务
fm.beginTransaction().add(R.id.content,moreFragment).commit();
fm.beginTransaction().add(R.id.content, mapFragment).commit();
fm.beginTransaction().add(R.id.content, guideFragment).commit();
如果您有3个选项卡,那么最后提交第一个选项卡片段(fragm3、fragm2、fragm1)非常重要
通过不加载每个新片段/刷新片段,智能手机现在可以实现高速性能。您的片段内容是直接相关还是间接相关?也就是说,在没有其他片段的情况下,每个片段的内容是否能够存在并有意义?如果没有,那么也许用
ViewPager
切换选项卡式导航更适合您的要求。所有三个片段都在不同的视图/选项卡中。视图寻呼机是一个自己的类,还是我可以把它添加到我的活动中?或者我正确地理解它——我是否应该删除底部导航并用一个VIEWPER替换它?是的——考虑你正在显示的内容类型,并选择最佳的小部件来显示内容。查看并查看ViewPager文档。可能ViewPager
更适合您的要求。好的,谢谢CzarMatt。但我真的不能相信Android/Google团队在不处理片段生命周期的情况下提供了底部导航栏。当然,这是一个有点新的东西-但总是调用一个选项卡的新实例是。。。
fm.beginTransaction().add(R.id.content,moreFragment).commit();
fm.beginTransaction().add(R.id.content, mapFragment).commit();
fm.beginTransaction().add(R.id.content, guideFragment).commit();