gpt4 book ai didi

android - 导航 View 全局操作返回状态

转载 作者:行者123 更新时间:2023-12-02 04:06:10 24 4
gpt4 key购买 nike

我一直在搞乱 Jetpack 导航组件,并且创建了一个使用抽屉导航的 Activity 。

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val navigationController = findNavController(R.id.navigationHostFragment)
navigationView.setupWithNavController(navigationController)

val appBarConfiguration = AppBarConfiguration(TOP_LEVEL_DESTINATIONS, drawerLayout)
toolbar.setupWithNavController(navigationController, appBarConfiguration)
}

override fun onSupportNavigateUp(): Boolean =
NavigationUI.navigateUp(findNavController(R.id.navigationHostFragment), drawerLayout)

}

这正如我所期望的那样,但后来我添加了 global action进入设置屏幕。

<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/main"
app:startDestination="@id/appBarFragment">

...

<activity android:id="@+id/settingsActivity"
android:name="com.example.app.ui.SettingsActivity"
android:label="@string/title_settings"/>

<action android:id="@+id/settingsAction"
app:destination="@+id/settingsActivity"/>

</navigation>

并引用 NavigationView 菜单中的操作。

<menu xmlns:android="http://schemas.android.com/apk/res/android">

...

<group android:id="@+id/navigationGroupSettings">

<item android:id="@+id/aboutAction"
android:title="@string/title_about"
android:icon="@drawable/ic_info_black_24dp"/>

<item android:id="@+id/settingsAction"
android:title="@string/title_settings"
android:icon="@drawable/ic_settings_black_24dp"/>

</group>

</menu>

这会显示SettingsActivity,但是当我按后退按钮返回MainActivity时,会显示第一个目的地,而不是之前的目的地。即使 NavigationView 正确保存其状态,并检查了最后一个目的地(而不是列表中的第一项)。

我还尝试用 SettingsFragment 替换 SettingsActivity,结果相同。

选择全局操作后,如何让导航组件正确保存其状态?

最佳答案

根据 onNavDestinationSelected() documentation (这就是NavigationUI triggers menu items):

By default, the back stack will be popped back to the navigation graph's start destination. Menu items that have android:menuCategory="secondary" will not pop the back stack.

因此,如果您想避免在选择设置目标时从堆栈中弹出其他目标,则可以将 android:menuCategory="secondary" 添加到菜单项。

关于android - 导航 View 全局操作返回状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56243037/

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