我想知道是否有可能在可見的活動更改中進行復制,這些更改是在不可見的活動中發生的。Android如何將信息從一個活動複製到其他活動
例如,我有一個循環,其中一個整數在Activity A中遞增,然後我調用Activity B作爲一個額外的整數。
有沒有一種方法可以反映B中的增量(這是A中產生的)?
在此先感謝。
我想知道是否有可能在可見的活動更改中進行復制,這些更改是在不可見的活動中發生的。Android如何將信息從一個活動複製到其他活動
例如,我有一個循環,其中一個整數在Activity A中遞增,然後我調用Activity B作爲一個額外的整數。
有沒有一種方法可以反映B中的增量(這是A中產生的)?
在此先感謝。
由於INT是基本類型,與INT類型的變量時將它傳遞到活動乙將不被改變。
我建議你在INT類型的包裝器傳遞(即class IntWrapper { int value; }
)
當您增加value
的變化將反映。
您也可以使用廣播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);
請記住,在某些情況下,這可能有點矯枉過正,但它是在活動/片段之間溝通和傳輸數據的好方法。
我會反對這種做法。 BroadcastReceiver適用於內部應用程序通信。在相同的應用程序中使用它太過矯枉過正。 – Krypton