我有一个片段,我正在接收消息,这些消息写入消息对象demoRxMsg
在接收器线程中,我调用demoRxMsg = new MessageStructure();
数据被接收和写入,一切都很好。
现在我想在另一个片段中使用这个demoRxMsg
来读出包含数据并将它们“转换”成一个漂亮的UI元素。
问题是:我该怎么做。我试着写一个Getter,但是当我通过
调用它时demoRxMsg = ((Diagnostics) getActivity()).getMessage();
我得到Cannot cast from Activity to Diagnostics
。
是因为片段不是活动吗?但片段(我理解片段教程)是活动的一部分,不是吗?
我希望有人可以提供帮助:)
答案 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();
}