使用 bundle 在滑动选项卡片段中传递消息 returns null
Using bundle for message passing in sliding tab fragments returns null
我不擅长使用片段。这就是我在滑动选项卡
的第一个片段的 onActivityCreated 中将 StringArrayList 传递到包内的方式
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
next_personal = (Button) getActivity().findViewById(R.id.personal_next);
next_personal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
validate();
}
});
}
private void validate() {
isValid = FormValidator.validate(this, new SimpleErrorPopupCallback(getActivity().getApplicationContext(), true));
if (isValid) {
arrayList = new ArrayList<String>();
arrayList.add(memID.getText().toString());
arrayList.add(idNumber.getText().toString());
arrayList.add(firstName.getText().toString());
arrayList.add(secondName.getText().toString());
arrayList.add(lastName.getText().toString());
arrayList.add(secondLastName.getText().toString());
Bundle bundle = new Bundle();
bundle.putStringArrayList("personal",arrayList);
Log.d("bundle",": "+bundle.toString());
FragContactInfo frag = new FragContactInfo();
frag.setArguments(bundle);
((RegisterTabActivity) getActivity()).setCurrentItem(1, true);
}
}
然后我尝试在滑动选项卡的第三个片段中获取 ArrayList,如下所示:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Bundle bundle = getArguments();
if (bundle != null && bundle.containsKey("personal")) {
ArrayList<String> userId = bundle.getStringArrayList("personal");
}
else{
Toast.makeText(getActivity(),"Bundle is null",Toast.LENGTH_SHORT).show();
}
}
一直返回null。在两个片段的 onCreateView 内部执行相同的操作,结果相同。我在这里弄错了什么?
使用 bundle 对解析片段之间的数据没有帮助(不知何故)
所以我简单地创建了在目标片段中设置和获取数据的方法。
public void setPdata(JSONObject obj) {
this.personalJSON = obj;
}
public JSONObject getPdata() {
return personalJSON;
}
然后调用set方法在sender片段中设置json。
FragContactInfo frag = new FragContactInfo();
frag.setPdata(json);
然后通过简单地调用 get 方法访问 json。
array1 = getPdata().getJSONArray("args");
如果有人有更有效的解决方案,请告诉。快乐编码。
我不擅长使用片段。这就是我在滑动选项卡
的第一个片段的 onActivityCreated 中将 StringArrayList 传递到包内的方式public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
next_personal = (Button) getActivity().findViewById(R.id.personal_next);
next_personal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
validate();
}
});
}
private void validate() {
isValid = FormValidator.validate(this, new SimpleErrorPopupCallback(getActivity().getApplicationContext(), true));
if (isValid) {
arrayList = new ArrayList<String>();
arrayList.add(memID.getText().toString());
arrayList.add(idNumber.getText().toString());
arrayList.add(firstName.getText().toString());
arrayList.add(secondName.getText().toString());
arrayList.add(lastName.getText().toString());
arrayList.add(secondLastName.getText().toString());
Bundle bundle = new Bundle();
bundle.putStringArrayList("personal",arrayList);
Log.d("bundle",": "+bundle.toString());
FragContactInfo frag = new FragContactInfo();
frag.setArguments(bundle);
((RegisterTabActivity) getActivity()).setCurrentItem(1, true);
}
}
然后我尝试在滑动选项卡的第三个片段中获取 ArrayList,如下所示:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Bundle bundle = getArguments();
if (bundle != null && bundle.containsKey("personal")) {
ArrayList<String> userId = bundle.getStringArrayList("personal");
}
else{
Toast.makeText(getActivity(),"Bundle is null",Toast.LENGTH_SHORT).show();
}
}
一直返回null。在两个片段的 onCreateView 内部执行相同的操作,结果相同。我在这里弄错了什么?
使用 bundle 对解析片段之间的数据没有帮助(不知何故)
所以我简单地创建了在目标片段中设置和获取数据的方法。
public void setPdata(JSONObject obj) {
this.personalJSON = obj;
}
public JSONObject getPdata() {
return personalJSON;
}
然后调用set方法在sender片段中设置json。
FragContactInfo frag = new FragContactInfo();
frag.setPdata(json);
然后通过简单地调用 get 方法访问 json。
array1 = getPdata().getJSONArray("args");
如果有人有更有效的解决方案,请告诉。快乐编码。