gpt4 book ai didi

android - SetupWithNavController 不适用于工具栏

转载 作者:行者123 更新时间:2023-11-29 15:34:39 25 4
gpt4 key购买 nike

我正在尝试将工具栏绑定(bind)到导航 Controller ,为此我使用了以下代码:

NavigationUI.setupWithNavController(toolbar, NavHostFragment.findNavController(nav_host))

在菜单文件中,我提供了应用程序应导航到的 fragment 的 ID,如下所示:

<item
android:id="@+id/menuFragment"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never" />

我有一个像这样的简单导航图文件:

<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"
android:id="@+id/nav_graph"
app:startDestination="@id/homeFragment">

<fragment
android:id="@+id/homeFragment"
android:name="com.vapoyan.myapplication.HomeFragment"
android:label="fragment_home"
tools:layout="@layout/fragment_home" >
<action
android:id="@+id/action_homeFragment_to_menuFragment"
app:destination="@id/menuFragment" />
</fragment>

<fragment
android:id="@+id/menuFragment"
android:name="com.vapoyan.myapplication.MenuFragment"
android:label="fragment_menu"
tools:layout="@layout/fragment_menu" />
</navigation>

有没有人有经验或可以建议我如何解决这个问题,导航组件是否支持工具栏?

任何示例代码或引用?

最佳答案

最后,感谢 Google CodeLab,我找到了解决方案

我缺少的是:

override fun onOptionsItemSelected(item: MenuItem): Boolean {
return NavigationUI.onNavDestinationSelected(item, NavHostFragment.findNavController(nav_host))
|| super.onOptionsItemSelected(item)
}

另外,如果你想支持后退按钮,你需要在 onCreate 方法中添加:

NavigationUI.setupWithNavController(toolbar, NavHostFragment.findNavController(nav_host))

基本上,根据我的理解,只需为菜单项提供正确 fragment 的 id 并调用 setupWithNavController 就应该可以工作,但该假设不正确,或者可能在当前版本 (1.0.0-alpha07) Google 伙计们改变了一些东西。所以现在它工作正常。

如果您发现有办法缩短 :) 或更好 :) 请告诉我。

关于android - SetupWithNavController 不适用于工具栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53443965/

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