如何解决如何保存片段状态:带有片段android的底部导航视图
我正在创建一个包含首页,颜色,配置文件三个部分的应用程序,我正在使用底部导航视图及其片段来实现此目的。
App UI 这是我的代码: 创建方法的主要活动:
final HomeFragment homeFragment = new HomeFragment();
final ColorFragment colorFragment = new ColorFragment();
final ProfileFragment profileFragment = new ProfileFragment();
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment active = homeFragment;
switch (item.getItemId()){
case R.id.action_home:
active = homeFragment;
break;
//return true;
case R.id.action_color:
active = colorFragment;
break;
case R.id.action_profile:
active = profileFragment;
break;
default:
active = homeFragment;
break;
}
//Loading the fragment on click
fragmentManager.beginTransaction().replace(R.id.fragment_container,active).commit();
return true;
}
});
我正在使用片段管理器将片段加载到我的主要活动中,这具有以下问题。
1。每次单击底部导航图标时,它都会重新加载片段。(我从firebase中获取数据会很昂贵)
我已经阅读了很多与此相关的文章,发现了如下解决方案:
- 在活动创建时隐藏片段
fragmentManager.beginTransaction().add(R.id.fragment_container,profileFragment,"3").hide(profileFragment).commit();
fragmentManager.beginTransaction().add(R.id.fragment_container,colorFragment,"2").hide(colorFragment).commit();
fragmentManager.beginTransaction().add(R.id.fragment_container,homeFragment,"1").commit();
上述解决方案会在创建活动时加载所有片段,而这并不是有效的方案
- 使用NavHost: 每次都会刷新片段。
这对我也不起作用。
请帮助:
我要实现的目标: 1.片段应该仅在我第一次单击图标时加载。 2.创建活动时不应加载所有片段。 3.当我修改片段时,不应再次加载它,我应该保持在先前的状态ex。滚动到第25张卡
//它应该像playstore,youtube一样,当我们单击图标时它将加载数据,当我们重新访问状态即会出现。
解决方法
您要么需要使用Google为BottomNavigationView
提供的扩展功能,要么使用ViewPager
/ ViewPager2
来使每个片段都有其自己的堆栈,然后返回完全相同的片段一遍又一遍地创建根片段的过程。两种解决方案都要求您将NavHostFragment
作为每个选项卡的根。您可以检出示例in this repo。
您可以使用FragmentPagerAdapter
或ViewPager2
。对于相似的问题,我推荐给您两个答案:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。