1

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

4

3 回答 3

1

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

1.应用程序类:该类对您的所有应用程序活动都是可见的,因此您可以从一个活动将您的对象保存在此类中,然后从另一个活动访问它。

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

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

3.如果您的对象实现了 Serializable/Parcelable,那么您可以通过捆绑传递它。

关于如何序列化对象的示例:

如何序列化对象并将其保存到 Android 中的文件中?

于 2013-04-05T13:16:01.140 回答
0

一种选择可能是实现 Serializable 接口,然后您可以使用 Intent#putExtra() 方法的 putExtra(Serializable..) 变体在 Intent 中传递对象实例。

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

// to retrieve object in second Activity
getIntent().getSerializableExtra("MyClass");
于 2013-04-05T13:15:43.207 回答
0

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

我首选的方法是“单例模式”,您可以在其中创建一个类,该类的目的是创建一个包含您想要保留的任何数据的单个实例。如果您的应用程序被终止,单例实例将丢失并且必须重新创建,但所有 Android 应用程序始终都存在这种风险。

有关我在 Android 中实现单例的信息,请参阅在 Android 中保存同一 Activity 的多个实例状态。

哦,我应该补充一点,这只适用于所有活动都在同一个进程中,共享相同地址空间的应用程序。否则,您必须使您的对象可序列化并将其写入文件。

于 2013-04-05T15:26:22.983 回答