亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Android上將對象從一個活動傳遞到另一個活動?

如何在Android上將對象從一個活動傳遞到另一個活動?

臨摹微笑 2019-12-18 12:13:28
如何在Android上將對象從一個活動傳遞到另一個活動?我需要能夠在我的應用程序中的多個活動中使用一個對象,它需要是同對象。做這件事最好的方法是什么?我嘗試過將對象設置為“公共靜態”,這樣它就可以被其他活動訪問,但出于某種原因,這并沒有切斷它。還有別的辦法嗎?
查看完整描述

3 回答

?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

在創建意圖對象時,可以利用以下兩種方法在兩個活動之間傳遞對象。

腐散

可序列化

你可以讓你的類實現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-12-19
?
慕森王

TA貢獻1777條經驗 獲得超3個贊

類的子類。應用并將共享對象存儲在那里。應用程序對象應該在應用程序的生存期內存在,只要有一些活動組件。

從您的活動中,您可以通過以下方式訪問應用程序對象getApplication().


查看完整回答
反對 回復 2019-12-19
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

這個答案是特定于要傳遞的對象具有嵌套類結構的情況。使用嵌套的類結構,使其具有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-12-19
  • 3 回答
  • 0 關注
  • 473 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號