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

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

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

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

3 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

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

腐散

可序列化

你可以让你的类实现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-10-13
?
慕侠2389804

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

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

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


查看完整回答
反对 回复 2019-10-13
?
阿波罗的战车

TA贡献1862条经验 获得超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-10-13
  • 3 回答
  • 0 关注
  • 300 浏览

添加回答

举报

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