使用 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");

如果有人有更有效的解决方案,请告诉。快乐编码。