Android导航:从源和目标目的地推断操作

时间:2019-01-30 11:50:08

标签: android-architecture-navigation

Android导航允许将工具栏菜单中的项目与导航图中的元素一起耦合在一起,

val navctrl = findNavController(R.id.AirTimeFragment) 
val toolbar = findViewById<Toolbar>(R.id.toolbar)
setSupportActionBar(toolbar)
setupActionBarWithNavController(this, navctrl)

通过指定菜单项的ID

<menu>
    <item android:id="@+id/fragment" .../>
     OR
    <item android:id="@+id/action_fragment_to_fragment" .../>
</menu>

与导航图中的片段或动作ID相同。

<navigation>
    <fragment android:id="@+id/fragment" ...>
        <action android:id="@+id/action_Fragment_to_Fragment" ... />
    </fragment>
</navigation>

我曾经遇到过一种情况,我想使用菜单在两个片段之间切换,并指定了动作ID,而不是片段ID。因此,对于图A -> {B,C},我指定了A-BA-C作为ID。我发现我可以导航到任一目的地一次,但是此后我无法在它们之间导航。那就是我曾经使用B导航到A-B,然后由于现在无效而无法使用C导航到A-C。显然,引用不再有效。那就是我需要一个ID为B-C的菜单项。我使用的解决方法是将片段ID指定为菜单ID。因此,分别用B代替A-BC代替A-C。我现在知道无论如何我都必须以编程方式执行此操作。

我只是以为这会破坏首先提供导航的目的;特别是如果您要依靠某种形式的过渡来进行。是否可以列出多个动作作为菜单ID?那是否可以同时提供A-BC-B作为菜单项的ID?给定源和目标片段/ Activit(y | ies),导航是否会尝试确定要使用哪个动作,毕竟它是一个有向图?我很好奇是否这样做。也许我只是错过了这样说的文档。

0 个答案:

没有答案