我已经将我的应用程序转换为使用NavigationUI
。但是setupWithNavController()
代替了我的setNavigationItemSelectedListener()
。
在我的侦听器中,我向片段传递了(类型安全)参数。
答案 0 :(得分:0)
如果我理解您的问题,那么您要寻找的是:
Navigation parameters documentation
简而言之:
在导航图中,您希望将值发送到的片段上,将添加一个参数。
<fragment android:id="@+id/myFragment" >
<argument
android:name="amount"
app:argType="integer"
android:defaultValue="0" />
</fragment>
当您将该片段作为动作引用时,该库将生成一个Directories类,其外观如下:
val action = SpecifyAmountFragmentDirections.confirmationAction(amount)
v.findNavController().navigate(action)
根据您命名的Fragment和操作生成名称。 另外请注意,如果它们也是可包裹的,则可以发送整个对象。
如果有问题的片段是图形的startDestination,则不确定是否可以立即执行。解决方法可能是将数据加载到Fragment中?还是可以从Activity集成到共享的ViewModel中?
祝你好运!
答案 1 :(得分:0)
如果有人仍在寻找该问题的答案。我发现了NavigationUI Global actions(使用alpha-09)有用的解决方法
您可以为导航图提供顶级操作:
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_nav"
app:startDestination="@id/mainFragment">
...
<action android:id="@+id/action_global_mainFragment"
app:destination="@id/mainFragment"/>
</navigation>
并在用户单击菜单项时将其与导航控制器一起使用,以正确的捆绑软件进行导航。请小心,从NavigationView中删除.setupWithNavController(navController)调用,否则它将覆盖您的行为。