我有活动:
<layout xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="viewModel"
type="model" />
</data>
<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">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout_wallet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
android:background="@color/colorPrimary">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:layout_marginEnd="16dp">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/appCompatImageView_go_back"
android:layout_width="28dp"
android:layout_height="wrap_content"
android:foreground="?android:attr/selectableItemBackground"
android:tint="@color/colorWhite"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_ico_arrow_left" />
<ImageView
android:layout_width="45dp"
android:layout_height="38dp"
android:tint="@color/colorWhite"
android:src="@drawable/tuya_logo_top"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/appCompatImageView_help"
android:layout_width="30dp"
android:layout_height="30dp"
android:foreground="?android:attr/selectableItemBackground"
app:srcCompat="@drawable/ic_tuya_help"
android:tint="@color/colorWhite"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.4" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.appbar.AppBarLayout>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment_wallet"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:navGraph="@navigation/wallet_navigation"
app:defaultNavHost="true" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
当我导航到第一个片段时,一切都很好。从第一个片段中,我使用以下命令导航到另一个片段:
findNavController().navigate(WalletRegisterFragmentDirections.actionWalletRegisterFragmentToWalletRegisterConfirmFragment(
viewModel.getExpeditionDate(), viewModel.expeditionPlace
))
然后,在第二个片段中,我尝试使用以下命令返回上一个片段:
(activity as WalletActivity).appCompatImageView_go_back.setOnClickListener {
requireActivity().onBackPressed()
}
但是该行为无法按预期工作,导航不会返回到先前的片段,而是重新加载当前片段,这是我使用的一种解决方法:
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) {
findNavController().navigate(R.id.nameofFirstFragment)
}
要导航到上一个片段,但我不想使用该行为,因为它不会保存上一个片段的实例,所以请创建一个新实例。
我在做什么错,为什么导航组件的后退按钮不起作用?
谢谢