我有自定义列表类型(finalHolder.data)
的数据之前我不得不将这些数据发送到Fragment构造函数,它正常工作
Fragment fragment;
fragment = new RouteMap(finalHolder.data);
((Activity)getContext()).getFragmentManager().beginTransaction().replace(R.id.content_frame,fragment).commit();
Fragment构造函数代码
public RouteMap() {
// Required empty public constructor
}
public RouteMap(MyListEntity data) {
this.data = data;
}
活动构造函数:
public Map() {
}
public Map(MyListEntity data) {
this.data = data;
}
但现在我希望这些相同的数据能够到达一个活动(Map2)
我尝试了putExtra但有意图但是它没有工作
简而言之,我想要" finalHolder.data"在调用它时发送给Activity构造函数。
如果不可能,请建议解决方案 感谢
答案 0 :(得分:1)
不建议使用Activity构造函数。要将数据对象发送到活动,您可以使用Parcelable的Intent附加功能。为此你需要按照以下方式进行。
从Parcelable实现您的数据类
Ex:MyListEntity实现了Parcelable
3.在数据类(MyListEntity)中实现CREATOR类
Parcelable示例的参考链接: passing object to activity
Intent i = new Intent(this,Activity(Map2).class); i.putExtra("mylistdata",finalHolder.data); startActivity(i);
MyListEntity listEntry = getIntent().getParcelableExtra("mylistdata");
现在您的对象已准备好进行第二项活动。 希望这对你有所帮助。
答案 1 :(得分:0)
要在意图中发送对象,对象的类必须是可序列化的,所以制作你的
MyListEntity实现serializable然后使用Intent的putExtra(String name, Serializable value)
,而在其他活动中使用intent getSerializableExtra (String name)
但不要忘记转换返回的值
答案 2 :(得分:0)
一个选项可能是让您的自定义类实现Serializable接口,然后您可以使用Intent#putExtra()方法的putExtra(Serializable ..)变体在intent extra中传递对象实例。
您的数据应该实现Serializable即
MyListEntity implements Serializable
//使用此方法发送数据
intent.putExtra("MyClass", finalHolder.data);
//在第二个活动中检索对象
getIntent().getSerializableExtra("MyClass");
答案 3 :(得分:0)
关于你的片段:将数据通过c-tor传递给片段是不明智的! 使用参数机制:
Fragment f = new SomeFragment();
Bundle args = new Bundle();
args.putExtra("data", someData);
f.setArguments(args);
撤回他们:
getArguments().getParcelableExtra("data")
更多信息here。
但是(回到你的问题),为此,你的数据必须实现Serialisable(Java方法),或者谷歌建议Parcelable(Android风格)
有关Parcelable here的更多信息。 实现Parcelable界面可能很无聊且容易出错,因此一些很酷的人创建了这个:http://www.parcelabler.com/