通过片段之间的导航传递数据 android studio
passing data through navigation between fragments android studio
我是 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);
}
}
});
}
});
您可以将一个包对象作为 .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 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);
}
}
});
}
});
您可以将一个包对象作为 .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");
}
}