java - 保持相同导航活动的片段但共享数据
问题描述
我提出这个问题是因为我在 Java 中没有找到任何好的例子。底部导航栏有 5 个片段:首页、收藏夹、上传、收件箱和用户。每次切换片段时,都会再次创建片段,这正是我不想要的。这不仅仅是替换碎片,因为 Home 和 Favorite 是相互依赖的:如果您在市场上将产品标记为收藏,它必须以收藏和相同的方式出现。
这里导航活动
public class NavigationActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(UnipopApp.LoggedUser.getUserLogged() != null) setContentView(R.layout.main);
else setContentView(R.layout.main_guest);
setUpNavigation();
}
public void setUpNavigation() {
BottomNavigationView bottomNavigationView;
NavHostFragment navHostFragment;
if(UnipopApp.LoggedUser.getUserLogged() != null) {
bottomNavigationView = findViewById(R.id.bottom_navigation);
navHostFragment =
(NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
}
else {
bottomNavigationView = findViewById(R.id.bottom_navigation_guest);
navHostFragment =
(NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment_guest);
}
NavigationUI.setupWithNavController(bottomNavigationView,
navHostFragment.getNavController());
}
}
如果附有示例,我想要一些可扩展的和更好的东西。谢谢
解决方案
您需要将项目 check=true 或 false 存储在列表中,然后您可以在应用程序的任何位置读取该列表。或者您可以创建一个单独的收藏项目列表并仅显示收藏部分中的项目。如果用户从家中取消选择该项目,那么您可以从最喜欢的项目列表中删除该项目。如果您使用的是 mvvm,那么您可以在所有片段之间共享一个视图模型。
推荐阅读
- prometheus - 仅测量 Prometheus 的 increase() 函数的积极变化
- uml - 类图和类模型一样吗?
- java - 使用 iText 5 的奇怪显示问题
- linux - Ubuntu Shell 脚本打开两个表并使用一个 shell 脚本运行两个命令
- android - 作为资源添加的字体在某些设备中不起作用
- mysql - MySQL 查询在多列上使用 DISTINCT 并按日期排序(最后一个时间戳)
- java - Wildfly/Hibernate 查询结果无法返回持久化实体
- php - Facebook API 库销毁会话/cookie 数据
- sql - Postgres FOR循环语法错误在或附近
- python - 在换行符之间创建空间 \n pandas