【问题标题】:Cannot navigate to another Activity with Navigation Component无法使用导航组件导航到另一个活动
【发布时间】:2021-08-23 07:10:11
【问题描述】:

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

目前Activity_1 拥有navGraph1Activity_2 拥有navGraph2

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

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

当我将navGraph2 嵌套在navGraph1 中时,我可以导航到navGraph2 中的起始目标片段。 navGraph2 中的此起始目的地位于 compose 中。 Activity_1 似乎绕过 Activity_2 并直接托管片段。但是,我希望 Activity_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>

【问题讨论】:

  • 您能否发布您的代码以及navGraph1navGraph2 文件
  • 我不允许发布这些文件,但我已经编辑了帖子并删减了代码。

标签: android android-jetpack android-architecture-navigation


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-09-24
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 2011-07-16
    • 2021-03-27
    • 2020-05-21
    相关资源
    最近更新 更多