我具有3个项目的底部导航视图,我的navGraph
如下所示:
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
app:startDestination="@id/nested_navigation"
<navigation
android:id="@+id/nested_navigation"
app:startDestination="@id/mainFragment" >
<fragment
android:id="@+id/mainFragment"
android:name="com.example.app.ui.main.MainFragment"
android:label="main_fragment"
tools:layout="@layout/main_fragment" />
<fragment
android:id="@+id/list"
android:name="com.example.app.ui.main.List"
android:label="fragment_news_list"
tools:layout="@layout/fragment_list" />
</navigation>
<fragment
android:id="@+id/settings"
android:name="com.example.app.ui.main.Settings"
android:label="Settings" />
</navigation>
底部导航视图中带有嵌套navGraph片段的导航正常工作,但是如果我导航到嵌套navGraph之外的settings_fragment
,然后单击其他我无法导航的项目/片段到其他片段,我基本上停留在此屏幕上。
我检查了如果将settings_fragment
放在嵌套的navGraph中会发生什么情况,效果很好。
如何解决此问题?
btw-我很确定这没有关系,但是设置片段是PreferenceScreen
布局,它位于XML资源而不是布局资源中
我的菜单项:
<item
android:id="@+id/mainFragment"
android:icon="@drawable/ic_home_black_24dp"
android:title="@string/home"
app:showAsAction="ifRoom"
/>
<item
android:id="@+id/list"
android:icon="@drawable/ic_format_list_bulleted_black_24dp"
android:title="@string/news_list"
app:showAsAction="ifRoom"
/>
<item
android:id="@+id/settings"
android:icon="@drawable/ic_settings_black_24dp"
android:title="@string/settings"
app:showAsAction="ifRoom"
/>
答案 0 :(得分:0)
问题与导航图的结构有关。
底部导航将仅考虑根元素。
- nested_navigation (root element) defaults to `mainFragment`
|- mainFragment (child element)
|- list (child element)
- settings (root element)
因此,根据以上说明,您将只能使用底部导航在settings
和nested_navigation
之间进行导航,而mainFragment
则为settings
。
如果要在list
和id
之间导航,那是不可能的。
请注意,菜单项的id
必须与图形目标的<item
android:id="@+id/nested_navigation"
android:icon="@drawable/ic_home_black_24dp"
android:title="@string/home"
app:showAsAction="ifRoom" />
<item
android:id="@+id/settings"
android:icon="@drawable/ic_settings_black_24dp"
android:title="@string/settings"
app:showAsAction="ifRoom" />
相匹配。
例如
id
请注意,两个元素中的id
与root
目标中的SendSSHCommand("export DISPLAY=:0.0 && mono --runtime=v4.0 /home/pi/ChatServer/ChatServer.exe");
正好匹配。
额外
也许我的其他答案可能有助于补充导航流程-> How to switch to other fragment in different back stack using Navigation Component?
答案 1 :(得分:0)
底部导航将只考虑根元素。 您可以像在导航图中一样重命名菜单中的项目。
前。您的嵌套图形名称是 homeNavigation -> 让我们在菜单中命名 id 是 homeNavigation。