【发布时间】:2011-02-11 10:47:18
【问题描述】:
Activity(s) 是否可以使用用户定义的对象进行通信?
附言
据我所知,当我希望 Activity(s) 相互通信时,我必须使用原始类型的对象,例如 int、String、boolean 等。
我们不使用 Serializable、Parcelable 和静态类。
【问题讨论】:
-
一种方法虽然不是一个好习惯,但用作公共静态,然后它可以在任何类中访问
Activity(s) 是否可以使用用户定义的对象进行通信?
附言
据我所知,当我希望 Activity(s) 相互通信时,我必须使用原始类型的对象,例如 int、String、boolean 等。
我们不使用 Serializable、Parcelable 和静态类。
【问题讨论】:
如果在调用 Intent 时提到 extras,您可以在对象中实现 Serializable 或 Parcelable 接口以传递它们。
您也可以将该对象放入自己的Application 类实现中,并在Activity 或Service 类as described in my other answer 中访问它。但请记住,以这种方式共享状态可能是您设计中更普遍问题的标志。
【讨论】:
你有几个选择:
1.您可以将更复杂的结构包装在一个实现 Parcelable 接口的类中,该接口可以存储在一个额外的中。
2.你可以将更复杂的结构封装在一个实现Serializable接口的类中,可以将其存储在一个额外的
3.您使用静态数据成员来传递东西,因为它们都在同一个进程中
4.您使用外部存储(文件、数据库、SharedPreferences)
5.正如刚刚发帖的人所说,使用通用组件,例如自定义应用程序或本地服务
你不想做的是通过额外的东西传递大的东西。例如,如果您正在创建一个从相机中抓取图片的应用程序,您不希望通过额外的内容传递这些 - 使用静态数据成员(听起来很恶心)。 Intent 被设计为跨进程工作,这意味着会进行一定数量的数据复制,当不需要大数据时,您希望避免这种情况。
回复来自 here
【讨论】:
Intent myintent = new Intent(Info.this, GraphDiag.class).putExtra("<StringName>", value);
startActivity(myintent);
在父活动中使用上面的代码
在子活动中
int s= getIntent().getIntExtra("<StringName>");
在同一个你检索浮点、字符、字符串值
【讨论】: