提问者:小点点

无法使用导航组件导航到其他活动


我正在尝试使用导航组件导航到另一个活动(登录)。

目前,活动1具有导航图1,活动2具有导航图2。

我在navGraph1中为Activity_2添加了一个目标。当我导航时,我得到一个空白屏幕,尽管Activity_2有一个导航图,其中包含另一个片段的起始目标。

onCreate没有被调用,或者至少没有被我在Activity_2中的断点击中。

当我在navGraph1中嵌套navGraph2时,我可以导航到navGraph2中的起始目标片段。navGraph2中的这个起始目的地位于compose中<代码>活动1似乎绕过了活动2,直接承载片段。但是,我希望将其托管,因为导航到Activity_2更像一个弹出模式,隐藏了底部导航栏之类的内容。

我不确定这里发生了什么。

<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/startFragment1">

    <activity
        android:id="@+id/Activity2"
        android:name="com.example.Activity2"
        android:label="Activity2" />

</navigation>

// in Activity 1
navController.navigate(R.id.activity2)

活动2

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/nav_graph_2"
    app:startDestination="@id/startFragment2">

    <fragment
        android:id="@+id/startFragment2"
        android:name="com.example.StartFragment2"
        android:label="StartFragment2" />

</navigation>

class Activity2 : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
        super.onCreate(savedInstanceState, persistentState)
        setContentView(R.layout.activity2)
    }
}

// Layout activity 2
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.fragment.app.FragmentContainerView
        android:id="@+id/fragmentContainerView"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/nav_graph_2" />
</androidx.constraintlayout.widget.ConstraintLayout>

共1个答案

匿名用户

找到了解决方案。活动2覆盖了错误的onCreate()。它应该是onCreate(),只有savedInstanceState参数。