gpt4 book ai didi

java - 通过 NavigationComponent 在 BottomNavigation fragment 之间传递数据

转载 作者:行者123 更新时间:2023-12-04 15:36:37 26 4
gpt4 key购买 nike

是否可以通过 NavigationContoller 在 BottomNavigation 控制的 Fragment 之间传递 Parcelable 对象/参数?

这是我的应用程序的流程,用户登录应用程序并打开一个包含 BottomNavigation 的 fragment 。我能够获得第一个 fragment 的参数(第一个 fragment 使用 NavHostFragment.findNavController(this).navigate(action) 打开)我能够向这个 Action 添加参数并传递值,但是 BottomNavigation 没有'有任何导航指令导航是通过 menuID 完成的。我如何通过 bundle 在所有这些底部导航 fragment 之间传递登录用户参数。

我尝试使用 onDestinationChanged() 传递参数

@Override
public void onDestinationChanged(@NonNull NavController controller, @NonNull NavDestination destination, @Nullable Bundle arguments) {
NavArgument argument = new NavArgument.Builder().setDefaultValue(selectedUser).build();
destination.addArgument("user", argument);
}

但应用程序仍然因 java.lang.IllegalArgumentException: Required argument "user"is missing and does not have an android:defaultValue

崩溃

最佳答案

我们可以像 asad 提到的那样使用 SharedViewModel 或者我们可以使用 NavGraph 来设置参数

navController.getGraph().findNode(R.id.todoFragment)
.addArgument("user", new NavArgument.Builder()
.setDefaultValue(user)
.build());

关于java - 通过 NavigationComponent 在 BottomNavigation fragment 之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59539928/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com