2013-04-05 64 views
1

我的应用程序包含2个活动。活动A是通过启动应用程序创建的。在这一个中,我创建了我自己的类MyClass的一个对象。这个类包含一个字符串和3个整数。在活动A中写下这个对象。 第二个活动B需要读取此对象。我怎样才能把它从A传递给B?还是有其他解决方案?如何将刚创建的对象从一个活动传递给另一个?

+0

[here](http://stackoverflow.com/questions/15747727/pass-arraylist-of-user-defined-objects-to-intent-android/15747819#15747819)检查这个答案。 – Sajmon 2013-04-05 13:23:22

回答

0

一个选项可以实现Serializable接口,然后您可以使用意图#putExtra()方法的putExtra(Serializable ..)变体传递意图额外的对象实例。

//to pass : 
    intent.putExtra("MyClass", obj); 

// to retrieve object in second Activity 
getIntent().getSerializableExtra("MyClass"); 
+0

谢谢你,但是我的班级和它的使用引起了一些新的问题。我更喜欢改变我的整个计划。 – LosTheAlef 2013-04-07 17:25:06

+0

@LosTheAlef:如果连问题都被唤起,也是一个非常令人兴奋的应用程序。 ;) – shinjin 2014-04-08 06:56:17

1

有几个方法,你可以从一个活动传递一个对象到另一个:

应用类:这一类是所有应用程序活动可见这样可以节省你的对象这个类从一个Activity开始,然后从另一个Activity访问它。

2.您可以将您的Class分解为简单变量:string和3个整数,并将它们通过捆绑或从一个活动传递到另一个活动,然后再次构造您的对象。

Intent intent = new Intent (this, TargetActivity.class); 
intent.putExtra(KEY, value); 
intent.putExtra(KEY, "value"); 
startActivity(intent); 

如果你的对象实现Serializable/Parcelable,那么你可以通过束通过。关于如何将对象序列

例子:

How do I serialize an object and save it to a file in Android?

+0

Thx :)但这是什么“可序列化”? – LosTheAlef 2013-04-05 13:20:26

+1

http://developer.android.com/reference/java/io/Serializable.html – 2013-04-05 13:21:33

+1

想象一下,试图通过一扇门移动一大块家具,但它太大了。相反,你把它分开,并移动每一块通过门单个文件。一旦进入,你就会重建这件家具。本质上,这就是Serializable允许你做的事情。你可以把一个复杂的对象,解构成一个更简单的形式,然后重建回复杂的形式(在这种情况下,通过一个Bundle传递后)。 – codebaum 2013-04-05 14:09:44

0

它可能会非常棘手,因为没有保证您的应用程序不能活动之间被杀害。实际上,在活动期间可能会死亡,因此保留持久对象可能会非常棘手。

我的首选方法是创建一个类的“单例模式”,其目的是创建一个包含任何要挂起的数据的单个实例。如果您的应用程序被杀害,单身人员实例将会丢失并且必须重新创建,但是所有Android应用程序无论如何都会一直存在这种风险。

请参阅Save multiple instances states of the same Activity in Android,了解我在Android中执行单例的情况。

哦,我应该补充说,这只适用于所有活动在同一个进程中共享相同地址空间的应用程序。否则,你将不得不让你的对象serialiazable并把它写到一个文件。

+0

或者,你可以让你的对象像Emil建议的那样可序列化。 – 2013-04-05 22:28:32

+0

谢谢,但是我的班级和它的使用引起了一些新的问题。我更喜欢改变我的整个计划。 – LosTheAlef 2013-04-07 17:25:24

相关问题