我的应用程序包含2个活动。活动A是通过启动应用程序创建的。在这一个中,我创建了我自己的类MyClass的一个对象。这个类包含一个字符串和3个整数。在活动A中写下这个对象。 第二个活动B需要读取此对象。我怎样才能把它从A传递给B?还是有其他解决方案?如何将刚创建的对象从一个活动传递给另一个?
回答
一个选项可以实现Serializable接口,然后您可以使用意图#putExtra()方法的putExtra(Serializable ..)变体传递意图额外的对象实例。
//to pass :
intent.putExtra("MyClass", obj);
// to retrieve object in second Activity
getIntent().getSerializableExtra("MyClass");
谢谢你,但是我的班级和它的使用引起了一些新的问题。我更喜欢改变我的整个计划。 – LosTheAlef 2013-04-07 17:25:06
@LosTheAlef:如果连问题都被唤起,也是一个非常令人兴奋的应用程序。 ;) – shinjin 2014-04-08 06:56:17
有几个方法,你可以从一个活动传递一个对象到另一个:
应用类:这一类是所有应用程序活动可见这样可以节省你的对象这个类从一个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?
Thx :)但这是什么“可序列化”? – LosTheAlef 2013-04-05 13:20:26
http://developer.android.com/reference/java/io/Serializable.html – 2013-04-05 13:21:33
想象一下,试图通过一扇门移动一大块家具,但它太大了。相反,你把它分开,并移动每一块通过门单个文件。一旦进入,你就会重建这件家具。本质上,这就是Serializable允许你做的事情。你可以把一个复杂的对象,解构成一个更简单的形式,然后重建回复杂的形式(在这种情况下,通过一个Bundle传递后)。 – codebaum 2013-04-05 14:09:44
它可能会非常棘手,因为没有保证您的应用程序不能活动之间被杀害。实际上,在活动期间可能会死亡,因此保留持久对象可能会非常棘手。
我的首选方法是创建一个类的“单例模式”,其目的是创建一个包含任何要挂起的数据的单个实例。如果您的应用程序被杀害,单身人员实例将会丢失并且必须重新创建,但是所有Android应用程序无论如何都会一直存在这种风险。
请参阅Save multiple instances states of the same Activity in Android,了解我在Android中执行单例的情况。
哦,我应该补充说,这只适用于所有活动在同一个进程中共享相同地址空间的应用程序。否则,你将不得不让你的对象serialiazable并把它写到一个文件。
或者,你可以让你的对象像Emil建议的那样可序列化。 – 2013-04-05 22:28:32
谢谢,但是我的班级和它的使用引起了一些新的问题。我更喜欢改变我的整个计划。 – LosTheAlef 2013-04-07 17:25:24
- 1. 将同一个对象从一个活动传递给另一个活动
- 2. 如何将selectedListItem的对象传递给另一个活动?
- 3. 如何将创建的对象传递给另一个类Java
- 4. 将DoubleArray从一个活动的对象传递到另一个
- 5. 将JSON对象从一个活动传递到另一个Android
- 6. 将对象的ArrayList从一个活动传递给另一个android
- 7. 将套接字对象传递给Android的另一个活动
- 8. 如何将Int从一个活动传递给另一个活动?
- 9. 如何将数组从一个活动传递给另一个活动android
- 10. 如何将位图或Drawable从一个活动传递给另一个活动?
- 11. 将GoogleApiClient传递给另一个活动
- 12. 将LinkedList传递给另一个活动
- 13. 从一个Android的活动传递对象到另一个
- 14. 如何从一个活动值传递给另一个类
- 15. 将QBRTCSession对象从一个活动传递到另一个活动
- 16. 将android.text.format.Time对象通过Intent从一个活动传递到另一个活动
- 17. 将GoogleApiClient对象传递给另一个活动?
- 18. 将活动对象传递给另一个会产生错误
- 19. 将调度程序对象传递给另一个活动
- 20. 将自定义对象传递给另一个活动android
- 21. 将对象传递给另一个活动(无Parcelable?)
- 22. 传递对象到另一个活动
- 23. 我可以在android中将一个对象的引用从一个活动传递给另一个活动吗?
- 24. 如何将位图对象从一个活动传递到另一个
- 25. 如何在android中将对象列表从一个活动传递给另一个活动?
- 26. JAVA:如何将一个对象内的对象传递给另一个对象?
- 27. 将对象传递给另一个类
- 28. 将对象传递给另一个类?
- 29. 如何将同一个对象一个活动传递给另外两个不同的活动
- 30. 如何将一个活动中的参数传递给另一个活动?
[here](http://stackoverflow.com/questions/15747727/pass-arraylist-of-user-defined-objects-to-intent-android/15747819#15747819)检查这个答案。 – Sajmon 2013-04-05 13:23:22