将自定义类传递给 Fragment

ste*_*ana 4 android bundle fragment

我有一个名为 Data 的自定义类,其中包含所有数据。主要活动创建两个片段。我在主要活动中有一个字段,如下所示:

private Data data = new Data();
Run Code Online (Sandbox Code Playgroud)

这些片段是用这个方法创建的:

private ArrayList<Fragment> getFragments() {
    ArrayList<Fragment> fragments = new ArrayList<Fragment>();
    fragments.add(new fragment_one());
    fragments.add(new fragment_two());
    return fragments;
}
Run Code Online (Sandbox Code Playgroud)

我需要将数据字段传递给片段,以便片段可以访问数据的方法。

我尝试创建一个包,但我无法传递自定义类。我能做什么?

qui*_*njn 6

捆绑包可以接受自定义类,如果它们实现ParcelableSerializableParcelable则速度更快,但实现的工作更多,Serializable更容易实现,但速度较慢。

然后你可以这样做:

Bundle bundle = new Bundle();
bundle.putSerializable("MyData", data);
fragment_one.setArguments(bundle);
Run Code Online (Sandbox Code Playgroud)

现在fragment_one将可以访问data它的onCreate(Bundle bundleHoldingData)方法。

另一种选择是在您的片段中有一个公共设置器来接收数据。这样做的好处是您不必等到数据准备好添加片段。