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

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

我需要能够在我的应用程序中的多个活动中使用一个对象,它需要是对象。做这件事最好的方法是什么?

我尝试过将对象设置为“公共静态”,这样它就可以被其他活动访问,但出于某种原因,这并没有切断它。还有别的办法吗?



临摹微笑
浏览 388回答 3
3回答

大话西游666

在创建意图对象时,可以利用以下两种方法在两个活动之间传递对象。腐散可序列化你可以让你的类实现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);

慕森王

类的子类。应用并将共享对象存储在那里。应用程序对象应该在应用程序的生存期内存在,只要有一些活动组件。从您的活动中,您可以通过以下方式访问应用程序对象getApplication().

芜湖不芜

这个答案是特定于要传递的对象具有嵌套类结构的情况。使用嵌套的类结构,使其具有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的捆绑-额外的系统来传递对象。有许多解决方案使这一过程灵活有效,这里有几个。每个人都有自己的优点和缺点。Eventbus奥托
打开App,查看更多内容
随时随地看视频慕课网APP