我正在重构我的应用,并且当前将两个活动重写为同一活动中的两个片段。这就是我以前用于将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);
现在我已将Activity1
和Activity2
重写为同一活动中的片段,是否有类似的方法可用于发送和检索片段中的数据?我发现非常直观地使用意图,但我认为片段使用不同的方式相互通信。
答案 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();
....
}
希望这会有所帮助。玩得开心:)