我正在尝试使用导航组件导航到另一个活动(登录)。
目前,活动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>
找到了解决方案。活动2覆盖了错误的onCreate()
。它应该是onCreate()
,只有savedInstanceState
参数。