为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Android上将对象从一个活动传递到另一个活动?

如何在Android上将对象从一个活动传递到另一个活动?

隔江千里 2019-07-17 10:44:18
如何在Android上将对象从一个活动传递到另一个活动?我需要能够在我的应用程序中的多个活动中使用一个对象,它需要是同对象。做这件事最好的方法是什么?我尝试过将对象设置为“公共静态”,这样它就可以被其他活动访问,但出于某种原因,这并没有切断它。还有别的办法吗?
查看完整描述

3 回答

?
森林海

TA贡献2011条经验 获得超2个赞

在创建意图对象时,可以利用以下两种方法在两个活动之间传递对象。

腐散

可序列化

你可以让你的类实现Parcelable系列化..然后,您可以在活动之间传递自定义类。我发现这很有用。

下面是我正在使用的代码片段

CustomListing currentListing = new CustomListing();Intent i = new Intent();
Bundle b = new Bundle();b.putParcelable(Constants.CUSTOM_LISTING, currentListing);
i.putExtras(b);i.setClass(this, SearchDetailsActivity.class);startActivity(i);

新开始的活动代码会是这样的.。

Bundle b = this.getIntent().getExtras();if (b != null)
    mCurrentListing = b.getParcelable(Constants.CUSTOM_LISTING);


查看完整回答
反对 回复 2019-07-17
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

类的子类。应用并将共享对象存储在那里。应用程序对象应该在应用程序的生存期内存在,只要有一些活动组件。

从您的活动中,您可以通过以下方式访问应用程序对象getApplication().


查看完整回答
反对 回复 2019-07-17
?
FFIVE

TA贡献1797条经验 获得超6个赞

这个答案是特定于要传递的对象具有嵌套类结构的情况。使用嵌套的类结构,使其具有Parcelable或Serializable是有点乏味的。并且,序列化对象的过程是在Android上效率低下..考虑下面的例子,

class Myclass    {
  int a;
  class SubClass    {
       int b;
  }}

用谷歌的GSON图书馆,您可以直接将对象解析为JSON格式的字符串,并在使用后将其转换回对象格式。例如,

MyClass src = new MyClass();Gson gS = new Gson();String target = gS.toJson(src); // Converts the object to a JSON String

现在,您可以将这个字符串作为一个StringExtra传递到具有活动意图的活动中。

Intent i = new Intent(FromActivity.this, ToActivity.class);i.putExtra("MyObjectAsString", target);

然后在接收活动中,从字符串表示创建原始对象。

String target = getIntent().getStringExtra("MyObjectAsString");MyClass src = gS.fromJson(target, MyClass.class); // Converts the JSON String to an Object

它保持了原始类的清洁和可重用性。最重要的是,如果这些类对象是以JSON对象的形式从Web创建的,那么这个解决方案是非常高效和省时的。

更新


虽然上面解释的方法在大多数情况下都有效,但出于明显的性能原因,不要依赖Android的捆绑-额外的系统来传递对象。有许多解决方案使这一过程灵活有效,这里有几个。每个人都有自己的优点和缺点。

  1. Eventbus

  2. 奥托


查看完整回答
反对 回复 2019-07-17
  • 3 回答
  • 0 关注
  • 617 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信