我有活動A with listView,用戶單擊任何啓動活動B的項目。根據用戶在活動B中所做的操作,B可能會更改活動A上的listView。Android:當活動返回到前一活動時檢測
所以我的問題:
我怎麼能告訴活性的,它是從何時活動B中的用戶返回到它恢復?
我希望能夠在activity A返回時發出listView的刷新信號。
謝謝!
我有活動A with listView,用戶單擊任何啓動活動B的項目。根據用戶在活動B中所做的操作,B可能會更改活動A上的listView。Android:當活動返回到前一活動時檢測
所以我的問題:
我怎麼能告訴活性的,它是從何時活動B中的用戶返回到它恢復?
我希望能夠在activity A返回時發出listView的刷新信號。
謝謝!
您可以添加代碼以刷新列表視圖在活動A的onResume()
@Override
protected void onResume() {
super.onResume();
//Code to refresh listview
}
使用startActivityForResult啓動B活動。並檢查活動B的活動A onActivityResult()方法中的數據。使用notifyDataSetChanged爲listView更新內容。
使用startActivityForResult
是最優雅的方式來做到這一點。 OnResume
會在每次關閉並打開應用程序時發生,這會使用更多的資源,尤其是在刷新大量數據的情況下。
聲明請求代碼爲常數,在您的活動的頂部:
public static final int OPEN_NEW_ACTIVITY = 123456;
將這個你開始新的活動:
Intent intent = new Intent(this, NewActivity.class);
startActivityForResult(intent, OPEN_NEW_ACTIVITY);
做一些活動時結束。文檔建議您使用resultCode
,但根據具體情況,按下按鈕時,結果可以是RESULT_OK
或RESULT_CANCELED
。所以我會放棄它。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == OPEN_NEW_ACTIVITY) {
// Refresh your ListView here
// ....
}
}
由於某種原因,我在將它放入碎片時遇到了麻煩。所以你必須把它放在活動中。
我有另一種方式來做到這一點,這可能會在某些情況下,來方便 - 我把私人捆綁變量,我們稱之爲state
,當我開始一個活動,我把一個字符串,說我開始哪項活動:
state.putString("startedActivity", "A");
Intent intent = new Intent(this, ActivityA.class);
startActivity(intent);
我存儲狀態束堅持不懈設備改變(旋轉等):
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putAll(state);
}
在onCreate
我加載狀態:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
savedInstanceState = new Bundle();
}
state = savedInstanceState;
}
然後在onResume
方法中,我可以檢查,我是否只是在某個活動。請注意,我立即從狀態中刪除字符串,因此它不會在輪換等情況下再次顯示。
public void onResume() {
super.onResume();
if (state.getString(STARTED_ACTIVITY, null) != null) {
// we just came from another activity!
state.putString(STARTED_ACTIVITY, null); // clear the state
// do whatever you need
}
}
嗯,我這樣做,它的工作,但實際上@ Muz的答案是一樣的,更簡單,所以如果你需要知道,使用他的,你是否真的從孩子的活動回來。 – 2016-05-22 00:15:48
這很像一個魅力。謝謝 – 2012-08-14 05:49:08
請注意,這也被稱爲其他場合,如活動開始,設備輪換等,而不僅僅是從活動B返回。 – 2016-05-22 00:17:29