我正在开发一个简单的应用程序来测试 Android 中的 JetPack Navigation。我的应用程序有两个活动“Activity1”和“Activity2”。我知道 Jetpack 导航仅适用于 SingleActivity 应用程序,但我想看看是否有任何解决方案可以解决我的问题。应用程序以“Activity1”开头。下面是导航xml
<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/mobile_nav"
app:startDestination="@+id/fragmentA1">
<fragment
android:id="@+id/fragmentA1"
android:name="com.example.android.codelabs.navigation.FragmentA1"
android:label="@string/home"
tools:layout="@layout/fragment_a_one">
<action
android:id="@+id/go_to_fragmentA2"
app:destination="@+id/fragmentA2"/>
</fragment>
<fragment
android:id="@+id/fragmentA2"
android:name="com.example.android.codelabs.navigation.FragmentA2"
tools:layout="@layout/fragment_a_two">
<argument
android:name="flowStepNumber"
app:argType="integer"
android:defaultValue="1"/>
<argument
android:name="displayName"
app:argType="string"
android:defaultValue="Hello"/>
<action
android:id="@+id/go_to_fragmentA3"
app:destination="@+id/fragmentA3"/>
</fragment>
<fragment android:id="@+id/fragmentA3"
android:name="com.example.android.codelabs.navigation.FragmentA3"
android:label="fragment_third"
tools:layout="@layout/fragment_a_three">
<action android:id="@+id/go_to_activityB"
app:destination="@id/activityB"/>
</fragment>
<activity android:id="@+id/activityB"
android:name="com.example.android.codelabs.navigation.registration.ActivityB"
android:label="activity_registration_main"
tools:layout="@layout/activity_registration_main">
<argument android:name="firstName"
app:argType="string"/>
</activity>
<fragment android:id="@+id/fragmentB1"
android:name="com.example.android.codelabs.navigation.registration.FragmentB1"
android:label="fragment_step1"
tools:layout="@layout/fragment_b_one">
<argument android:name="firstName"
app:argType="string"/>
</fragment>
<fragment android:id="@+id/fragmentB2"
android:name="com.example.android.codelabs.navigation.registration.FragmentB2"
android:label="fragment_step2"
tools:layout="@layout/fragment_b_two">
<argument android:name="lastName"
app:argType="string"/>
</fragment>
下面是来自 ActivityB 的代码
val navController = findNavController(R.id.registration_navHost)
navController.setGraph(R.navigation.mobile_navigation)
navController.navigate(R.id.fragmentB1,safeArgs.toBundle())
在 ActivityB 中获取 safeArgs 的代码
private val safeArgs by navArgs<ActivityBArgs>()
这是我的问题。1. 如何使用 jetpack Navigation 从 ActivityB(FragmentB1) 导航到 ActivityA(FragmentA2)。2.有没有办法通过android中的任何Manager Classes访问backStack?
为什么我需要两个活动? 作为 ActivityA 一部分的 FragmentA1、FragmentA2 和 FragmentA3 不应该有任何底部导航和抽屉布局。根据在这些片段中选择的答案,ActivityB 中会显示底部导航和抽屉布局。在 ActivityB 上的任何位置按下后退按钮时,ActivityA 应该与 FragmentA3 一起活跃起来。ActivityA 和 ActivityB 的工具栏也不同