嘿,最近我在使用 NavController 进行设置时发现了这种奇怪的底部导航行为。
问题
只有底部导航的导航图中的起始目的地保存其状态。而其他人则没有。[这意味着 onDestroy 永远不会仅用于起始目的地]。现在的问题是与起始目的地导航图关联的 ViewModel 永远不会被清除。
我正在寻找的行为
如何使起始目的地生命周期与所有其他目的地一样,因此在目的地更改时 viewModel 将被清除?
代码片段:
<?xml version="1.0" encoding="utf-8"?>
<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_main"
app:startDestination="@+id/nav_main_home">
<include
android:id="@+id/home_fragment_graph"
app:graph = "@navigation/nav_main_home"/>
<include
android:id="@+id/profile_fragment_graph"
app:graph = "@navigation/nav_main_profile"/>
<include
android:id="@+id/message_fragment_graph"
app:graph = "@navigation/nav_main_message"/>
</navigation>
nav_main_home -nav_graph- for HomeFragment
nav_main_profile -nav_graph- for ProfileFragment
nav_main_message -nav_graph- for MessageFragment
现在,当我从 HomeFragment 切换到 ProfileFragment 或 MessageFragment 时,不会调用 HomeFragment 的 onDestroy。但是当我从 ProfileFragment 或 MessageFragment 切换时,它们都会调用 onDestroy。