При использовании библиотеки навигации можно ли завершить внутреннюю деятельность с помощью finish()
в onSupportNavigateUp()
?Или мы должны использовать NavController
, чтобы удалить Activity
из стека?И у меня возникли проблемы с использованием NavController для удаления Activity
.
Мой график навигации выглядит следующим образом:
<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/home_frag">
<fragment
android:id="@+id/home_frag"
android:name="com.yamikrish.app.slicedemo.ui.home.HomeFragment"
android:label="home_frag"
tools:layout="@layout/home_fragment">
<action
android:id="@+id/open_details"
app:destination="@id/details_fragment" />
</fragment>
<activity
android:id="@+id/details_fragment"
android:name="com.yamikrish.app.slicedemo.ui.detail.DetailActivity"
android:label="@string/post_detail"
tools:layout="@layout/detail_page">
<argument
android:name="id"
app:type="integer" />
</activity>
<fragment
android:id="@+id/profile_frag"
android:name="com.yamikrish.app.slicedemo.ui.profile.ProfileFragment"
android:label="@string/profile"
tools:layout="@layout/profile_fragment" />
</navigation>
Я пытался использовать, как показано ниже:
(i) Использование NavController внутри DetailActivity
override fun onSupportNavigateUp(): Boolean {
val nav = NavController(this)
return nav.navigateUp()
}
Но получается исключение как,
java.lang.IllegalArgumentException: задний стек NavController пуст
(ii) Использование NavController внутри BaseActivity
override fun onSupportNavigateUp(): Boolean {
return findNavController(R.id.container).navigateUp()
}
Это также не работает.Я делаю это неправильно?