相关疑难解决方法(0)

如何使用Navigation Architecture Component从片段中获取结果?

假设我们有两个片段:MainFragmentSelectionFragment.第二个是用于选择某个对象的构建,例如整数.从第二个片段接收结果有不同的方法,如回调,总线等.

现在,如果我们决定使用导航架构组件导航到第二个片段,我们可以使用以下代码:

NavHostFragment.findNavController(this).navigate(R.id.action_selection, bundle)
Run Code Online (Sandbox Code Playgroud)

其中bundleBundle(当然)的实例.正如您所看到的那样,无法访问SelectionFragment我们可以进行回调的位置.问题是,如何使用Navigation Architecture Component接收结果?

android android-architecture-components android-jetpack android-architecture-navigation

24
推荐指数
5
解决办法
6230
查看次数

如何使用Android导航组件将值传递回之前的片段目的地?

让坐吧 我有一些这样的目的地

从片段 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

10
推荐指数
2
解决办法
3179
查看次数

为什么Android Navigation Component 屏幕不返回上一个Fragment,而是调用了previos Fragment 的onViewCreated 中的一个方法?

我有2个片段通话CreateRoomFragmentDisplayPhotoFragment,导航图是这个样子的:

<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 移动CreateRoomFragmentDisplayPhotoFragment,我使用如下 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

9
推荐指数
2
解决办法
1万
查看次数