通过片段之间的导航传递数据android studio

Posted

技术标签:

【中文标题】通过片段之间的导航传递数据android studio【英文标题】:passing data through navigation between fragments android studio 【发布时间】:2022-01-05 04:23:56 【问题描述】:

我是 android studio 的新手,还不完全了解它的工作原理,但我一直在尝试在 android studio 中将数据从一个片段发送到另一个片段。我一直无法找到这个问题的明确答案。我要做的是制作一个基本的停车应用程序,其中扫描二维码,二维码中的数据(停车名称和每小时价格)将发送到下一个片段,因为二维码扫描仪片段将打开我需要停车数据的 addParkingSession 片段。我一直在尝试使用“导航”来执行此操作,但我无法找到通过此方法发送数据的方法。有没有更适合这个的不同的方法(它必须从一个片段到另一个片段)我一直在尝试使用意图,但导航似乎没有选项来发送一个意图。

这里以我的一些代码为例。感谢您的帮助和理解

codeScanner.setDecodeCallback(new DecodeCallback() 
        @Override
        public void onDecoded(@NonNull Result result) 
            getActivity().runOnUiThread(new Runnable()
                @Override
                public void run()
                    if(result.getText() != null) 
                        String[] parkingdata = resultData.toString().split(",");
                        Intent intent = new Intent(getActivity().getBaseContext(), AddSession.class);
                        intent.putExtra("parkingName", parkingdata[0]);
                        intent.putExtra("parkingPrice", parkingdata[1]);
                        Navigation.findNavController(view).navigate(R.id.action_qrSession_to_addSession);
                    
                
            );
        
    );

【问题讨论】:

请查看此链接developer.android.com/guide/navigation/navigation-pass-data 【参考方案1】:

您可以将捆绑对象作为.navigate() 中的第二个参数传递,并在您的片段中使用getArguments() 访问它。

final Bundle bundle = new Bundle();
bundle.putString("test", "Hello World!");
Navigation.findNavController(view).navigate(R.id.action_qrSession_to_addSession, bundle);
public class MyFragment extends Fragment 
  
  @Override
  public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) 
    super.onViewCreated(view, savedInstanceState);
    // the string you passed in .navigate()
    final String text = getArguments().getString("test");
  

【讨论】:

以上是关于通过片段之间的导航传递数据android studio的主要内容,如果未能解决你的问题,请参考以下文章

如何在两个片段之间传递位图? (我正在使用 Android 导航组件)

通过适配器在片段之间传递数据(Kotlin Android)

如何在底部导航片段(或导航抽屉)之间传递数据?

如何在导航抽屉中的两个片段之间传递数据

使用导航从工具栏菜单项单击在片段之间传递数据 - Kotlin

如何在android中以编程方式在片段之间导航?