如何在同一活动中的片段之间传递gson JsonObject

时间:2017-12-05 15:22:03

标签: android android-fragments gson

我正在重构我的应用,并且当前将两个活动重写为同一活动中的两个片段。这就是我以前用于将gson JsonObject从第一个活动发送到第二个活动的方式:

活性1:

Intent intent = new Intent(this, Activity2.class);
intent.putExtra("form", gson.toJson(form));
startActivity(intent);

活性2:

intent = getIntent();
form = gson.fromJson(intent.getStringExtra("form"), JsonObject.class);

现在我已将Activity1Activity2重写为同一活动中的片段,是否有类似的方法可用于发送和检索片段中的数据?我发现非常直观地使用意图,但我认为片段使用不同的方式相互通信。

2 个答案:

答案 0 :(得分:1)

Bundle args = new Bundle();
args.putString("form", gson.toJson(form));
secondFragment.setArguments(args);

并在您的目标片段中:

getArguments().getString("form");

答案 1 :(得分:0)

你希望我对此不迟到。使用Gson库,您可以实现此功能。

在您的第一个片段中说出片段A。您可以将Gson解析为新的片段

 Bundle bundle = new Bundle();
 bundle.putSerializable("form", new Gson().toJson(Form));
 FragmentA fragment = new FragmentA();
 fragment.setArguments(bundle);
 loadFragment(fragment); // TODO

然后在第二个片段(片段B)中获取它

private Form form;

....
....

Bundle bundle = this.getArguments();
  if(bundle != null){
      form = new Gson().fromJson((String) bundle.getSerializable("form"), Form.class);
      // get parameters e.g form name, form id
      String name = form.getName();
      ....
            }

希望这会有所帮助。玩得开心:)