假设我们有两个片段:MainFragment和SelectionFragment.第二个是用于选择某个对象的构建,例如整数.从第二个片段接收结果有不同的方法,如回调,总线等.
现在,如果我们决定使用导航架构组件导航到第二个片段,我们可以使用以下代码:
NavHostFragment.findNavController(this).navigate(R.id.action_selection, bundle)
Run Code Online (Sandbox Code Playgroud)
其中bundle是Bundle(当然)的实例.正如您所看到的那样,无法访问SelectionFragment我们可以进行回调的位置.问题是,如何使用Navigation Architecture Component接收结果?
android android-architecture-components android-jetpack android-architecture-navigation
让坐吧 我有一些这样的目的地
从片段 A --> 到片段 B --> 到片段 C
我可以使用 Safe Args 将数据从片段 A 传递到片段 B,也可以使用从片段 B 到片段 C 的安全参数。
如果我想将片段 C 中生成的字符串带回片段 B 或片段 A 怎么办?
要从片段 C 导航到片段 B,我使用代码:
Navigation.findNavController(fragmentView).navigateUp()
Run Code Online (Sandbox Code Playgroud)
并从片段 C 导航到片段 A,我使用代码:
Navigation.findNavController(view).popBackStack(R.id.fragmentA, false)
Run Code Online (Sandbox Code Playgroud)
那么如何将值传递回之前的片段目的地?我是否必须从片段 C 返回到片段 B 并通过安全参数传递值?
真的需要你的帮助。非常感谢 :)
android android-fragments android-navigation android-jetpack android-architecture-navigation
我有2个片段通话CreateRoomFragment和DisplayPhotoFragment,导航图是这个样子的:
<navigation>
<fragment
android:id="@+id/createRoomFragment"
android:name="package.room.CreateRoomFragment"
android:label="Create a room"
tools:layout="@layout/fragment_create_room">
<action
android:id="@+id/action_createRoomFragment_to_roomFragment"
app:destination="@id/roomFragment" />
<action
android:id="@+id/action_createRoomFragment_to_displayPhotoFragment"
app:destination="@id/displayPhotoFragment" />
</fragment>
<fragment
android:id="@+id/displayPhotoFragment"
android:name="package.fragment.DisplayPhotoFragment"
android:label="fragment_display_photo"
tools:layout="@layout/fragment_display_photo" >
<argument android:name="bitmap"
app:argType="android.graphics.Bitmap"/>
</fragment>
Run Code Online (Sandbox Code Playgroud)
所以当我想从 to 移动CreateRoomFragment时DisplayPhotoFragment,我使用如下 do:
NavDirections action = CreateRoomFragmentDirections.actionCreateRoomFragmentToDisplayPhotoFragment(selectedPhoto);
Navigation.findNavController(view).navigate(action);
Run Code Online (Sandbox Code Playgroud)
这样做,我可以导航到DisplayPhotoFragment.
但是当我按下back设备的按钮以及Back arrow工具栏中的 时,它无法返回到CreateRoomFragment。
我试过这个,但仍然无法回到上一个片段:
requireActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(),
new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
navController.navigateUp(); //I tried this
navController.popBackStack(R.id.createRoomFragment,false); //and also this
}
});
Run Code Online (Sandbox Code Playgroud)
现在主要问题:
使用上面的代码,屏幕没有回到之前的Fragment( …
android android-fragments android-navigation android-architecture-navigation android-navigation-graph