2012-09-18 82 views
1

我想知道是否有可能在可見的活動更改中進行復制,這些更改是在不可見的活動中發生的。Android如何將信息從一個活動複製到其他活動

例如,我有一個循環,其中一個整數在Activity A中遞增,然後我調用Activity B作爲一個額外的整數。

有沒有一種方法可以反映B中的增量(這是A中產生的)?

在此先感謝。

回答

0

由於INT是基本類型,與INT類型的變量時將它傳遞到活動乙將不被改變。

我建議你在INT類型的包裝器傳遞(即class IntWrapper { int value; }

當您增加value的變化將反映。

0

您也可以使用廣播recievers傳遞數據:

在聽音活動/片段創建reciever並註冊它(這樣做是在OnCreate或的onResume什麼的,甚至onrestart)。該活動現在將監聽廣播,然後使用內置關鍵字測試廣播是否適用於該接收器。由於廣播的使用意圖完成後,你還可以得到並使用存儲在該意圖的其他數據(如您的INT):

my_broadcast_reciever = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) {String action = intent.getAction(); 
      if (action.equals("finish_buy_activity")) 
      //do whatever 
      }    
     } 
    }; 
    registerReceiver(my_broadcast_reciever, new IntentFilter("theKeywordThisBCRRespondsTo")); 

不要忘記註銷任何recievers中的onPause或的OnDestroy(無論更有意義根據您註冊reciever):

{unregisterReceiver(my_broadcast_reciever); 

現在,您要用於發送數據,斷火,像這樣的意圖活動/片段(您可能希望創建並保持意圖在一個更高的級別,所以你不必每次更新都創建一個新對象):

Intent sintent = new Intent("theKeywordThisBCRRespondsTo"); 
    //maybe also do: sintent.addInt(int); or something 
    sendBroadcast(sintent); 

請記住,在某些情況下,這可能有點矯枉過正,但它是在活動/片段之間溝通和傳輸數據的好方法。

+0

我會反對這種做法。 BroadcastReceiver適用於內部應用程序通信。在相同的應用程序中使用它太過矯枉過正。 – Krypton

相關問題