【发布时间】:2020-08-19 19:00:06
【问题描述】:
我正在创建一个包含三个部分的应用程序主页、颜色、配置文件我正在使用带有片段的底部导航视图来实现这一点。
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();
上述解决方案在创建活动时加载所有片段,这不是一个有效的方案
- 使用导航主机: 它每次都会刷新片段。
这对我也不起作用。
请帮忙:
我想要实现的目标: 1.片段应该只在我第一次点击图标时加载。 2.所有的片段不应该在活动创建的时候加载。 3.当我修改片段时它不应该再次加载,我应该保持之前的状态。滚动到第 25 张卡片
//它应该像playstore,youtube,当我们点击图标时,它会加载数据,当我们重新访问时,状态就会出现。
【问题讨论】:
标签: android android-fragments bottomnavigationview