2011-02-11 76 views
2

活动是否可以使用用户定义的对象进行通信?如何在使用非原始对象的活动之间进行通信

p.s.

  1. 据我知道,当我想活动(S)传达给对方,我不得不使用原始类型的对象,如int,字符串,布尔,...等。

  2. 我们不使用Serializable,Parcelable和静态类。

+0

单程

答复制,虽然是不是一个好的做法是使用公共静态,然后它会在任何类 – ingsaurabh 2011-02-11 10:53:21

回答

0
Intent myintent = new Intent(Info.this, GraphDiag.class).putExtra("<StringName>", value); 
startActivity(myintent); 

使用上面的代码中父活动

和儿童活动

int s= getIntent().getIntExtra("<StringName>"); 

在同一üretrive浮动,焦炭,字符串的值

+0

接近其原始数据,问的问题 – ingsaurabh 2011-02-11 10:52:21

+0

非原始类型不谢谢User333,但我想使用非原始类型。您告诉的方式不适用于非基元类型。你有没有其他想法可以这样做? – 2011-02-11 10:58:09

3

如果说话关于计算意图时的额外功能,您可以在您的obj中实现Serializable或Parcelable接口通过它们来传递它们。

您也可以将该对象放入自己的Application类的实现中,并在Activity或Service类as described in my other answer中对其进行访问。但请记住,以这种方式共享状态可能是您设计中更普遍问题的标志。

1

您有几种选择:

1.You可能在实现Parcelable接口,可以存储在一个额外的一类包装的更复杂的结构。

2.You可以换更复杂的结构,在实现Serializable接口,它可以存储在一个额外的

3.You使用静态数据成员通过周围的东西的一类,因为他们都在同样的过程

4.You使用

5.As谁刚刚张贴的人指出,使用共同的组件,如自定义应用程序或本地服务外部存储(文件,数据库,SharedPreferences)

你不想做的事是通过额外传递大件东西。例如,如果你正在创建一个从照相机中抓取图片的应用程序,那么你不需要额外传递这些图片 - 使用静态数据成员(听起来就像是icky)。 Intents旨在处理跨进程,这意味着有一定数量的数据复制正在进行,当不需要大型内容时您要避免这种复制。从 here

相关问题