在设置按钮监听器后,我创建了navigationOnClickListener,它将startDestination设置为当前的片段,然后通过.navigate()将目标更改为另一个片段,但视图并未更改。
点击监听器
navController = Navigation.findNavController(requireActivity(), R.id.nav_host_fragment)
view.findViewById<Button>(R.id.fragment_button).setOnClickListener {
navController.navigate(R.id.Camera2VideoFragment_To_FirstFragment)
}
closeFragment()
private fun closeFragment()
{
closePreviewSession()
closeCamera()
parentFragmentManager.popBackStack()
updatePreview()
}
main.xml(导航图)
<?xml version="1.0" encoding="utf-8"?>
<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/main.xml"
app:startDestination="@id/cameraFragment"
>
<fragment
android:id="@+id/cameraFragment"
android:name="com.example.camera2videotextureview.Camera2VideoFragment"
android:label="Camera2VideoFragment"
tools:layout="@layout/fragment_camera2_video">
<action
android:id="@+id/navigateToSecondFragment"
app:destination="@id/firstFragment" />
</fragment>
<fragment
android:id="@+id/firstFragment"
android:name="com.example.camera2videotextureview.FirstFragment"
android:label="FirstFragment"
tools:layout="@layout/fragment_first" />
</navigation>
主片段是使用Camera2 API的相机片段。FirstFragment只是一个空的kotlin类,其中布局仅包含一个TextView。
编辑:现在我已经编辑了onClickListener,我无法更改当前视图,我需要在当前片段上使用popBackStack,但不知道如何操作。