在另一个片段中使用片段的对象

时间:2014-01-27 09:18:06

标签: java android android-fragments

我有一个片段,我正在接收消息,这些消息写入消息对象demoRxMsg

在接收器线程中,我调用demoRxMsg = new MessageStructure();数据被接收和写入,一切都很好。

现在我想在另一个片段中使用这个demoRxMsg来读出包含数据并将它们“转换”成一个漂亮的UI元素。

问题是:我该怎么做。我试着写一个Getter,但是当我通过

调用它时
demoRxMsg = ((Diagnostics) getActivity()).getMessage();

我得到Cannot cast from Activity to Diagnostics。 是因为片段不是活动吗?但片段(我理解片段教程)是活动的一部分,不是吗?

我希望有人可以提供帮助:)

2 个答案:

答案 0 :(得分:1)

片段不是一种活动,它是活动的一部分,意味着它们一起工作,没有活动,片段不起作用等。

如果您想在另一个片段中使用您的数据,则需要使用Bundle

Bundle b = new Bundle();
b.putInt("my_data",YourData);

YourFragment f = new YourFragment();
f.setArguments(b);

在你的片段中获得价值,

Bundle b = getArguments();
int v = b.getInt("my_data",0);

如果它是您想要传递的对象,则需要对其进行序列化并再次对片段进行反序列化

答案 1 :(得分:0)

    Bundle bundle = new Bundle();
    bundle.putParcelableArrayList(key, value)// The value arrayList object must be a parcel able object
    fm = getFragmentManager();
    if (fm != null) {
        FragmentTransaction ft = fm.beginTransaction();
        frag.setArguments(bundle);
        ft.replace(R.id.fragment_main_container, frag, tag);
        ft.commit();
    }