Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android架构导航-onSupportNavigateUp()_Android_Kotlin_Android Architecture Components_Android Jetpack_Android Architecture Navigation - Fatal编程技术网

Android架构导航-onSupportNavigateUp()

Android架构导航-onSupportNavigateUp(),android,kotlin,android-architecture-components,android-jetpack,android-architecture-navigation,Android,Kotlin,Android Architecture Components,Android Jetpack,Android Architecture Navigation,使用导航库时,是否可以使用onSupportNavigateUp()中的finish()完成内部活动?或者我们应该使用NavController从堆栈中删除该活动?而且,我在使用NavController删除活动时遇到问题 我的导航图如下所示: <navigation xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-aut

使用导航库时,是否可以使用
onSupportNavigateUp()
中的
finish()
完成内部活动?或者我们应该使用
NavController
从堆栈中删除该
活动
?而且,我在使用NavController删除
活动时遇到问题

我的导航图如下所示:

<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>
但作为例外

java.lang.IllegalArgumentException:NavController后台堆栈为空

(ii)在BaseActivity内部使用NavController

override fun onSupportNavigateUp(): Boolean {
        val nav = NavController(this)
        return  nav.navigateUp()
}
 override fun onSupportNavigateUp(): Boolean {
            return  findNavController(R.id.container).navigateUp()
    }

这也不起作用。我做错了吗???

在这种情况下,您的详细信息活动没有父导航图的概念。你的例子ii是正确的。因为BaseActivity包含一个导航图。我不知道DetailActivity在做什么,但是如果它还包含导航图,那么您应该使用与BaseActivity相同的代码。事实上,您得到了这个错误,并在运行中创建了一个新的NavController,这告诉我DetailActivity没有使用导航图(创建一个新的NavController并没有提供一个图,默认情况下会使用空的后堆栈进行初始化)

总之,DetailActivity的onSupportNavigateUp的行为应该类似于正常的向上导航。如果有明确的父级,则应启动它,否则,只需完成()