爲了保持簡單,我有3個屏幕。 A,B和C. 可以從屏幕A. 訪問屏幕B或C可以從畫面B 訪問畫面C可以從畫面C管理屏幕流程
從畫面A數據訪問屏幕B被傳遞到B和C
我所希望做的是建立在屏幕上B和C,其中一個按鈕,曾經他們是拿着它回到了屏幕A.我並不想開始一個新的活動,因爲它需要它創造
數據也有一種方法可以否決手機上的後退按鈕。即如果在屏幕C上它回到A,即使用戶點擊B然後C?
感謝您的時間
爲了保持簡單,我有3個屏幕。 A,B和C. 可以從屏幕A. 訪問屏幕B或C可以從畫面B 訪問畫面C可以從畫面C管理屏幕流程
從畫面A數據訪問屏幕B被傳遞到B和C
我所希望做的是建立在屏幕上B和C,其中一個按鈕,曾經他們是拿着它回到了屏幕A.我並不想開始一個新的活動,因爲它需要它創造
數據也有一種方法可以否決手機上的後退按鈕。即如果在屏幕C上它回到A,即使用戶點擊B然後C?
感謝您的時間
一個建議是使用結果和startActivityForResult()工作。
如果您是來自B的C,並且您點擊按鈕轉到A,您可以設置結果意圖;
Intent result = new Intent();
result.putExtra("gotoA", true);
setResult(RESULT_OK, result);
finish();
然後通過重寫onActivityResult(),並檢查意圖額外趕上結果B,然後完成B.
不是100%肯定清楚這一點。您將該代碼添加到startActivityforresult()的屏幕C或A上? –
你用startActivityForResult()從B開始C,在buttonA按鈕上設置結果(顯示代碼)在C處,然後重寫B中的onActivityResult()以處理結果,並且當結果數據的gotoA爲真時(這只是一個標誌我編了),你可以在那裏調用finish(),它會返回到A. 這些活動由堆棧管理,所以它的FIFO。 – MrJre
是的,你可以重寫後退按鈕做什麼(它不是,雖然一個很好的做法)。您將需要重寫onBackPressed()
方法ActivityC這種方法中
Intent homeIntent=new Intent(this,ActivityA.class);
homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homeIntent);
編輯:見FLAG_ACTIVITY_CLEAR_TOP只是如果它不存在,它會創建活動的文檔,並且將清除的頂部所有活動它。您也可以將此數據傳遞給ActivityA。
這會覆蓋從A傳遞的數據的Arraylist還是需要將Arraylist傳遞迴A? –
你的問題讓我困惑......我不確定你在做什麼,但我不認爲你需要傳回ArrayList。 –
可以通過重新實現onBackPressed
public void onBackPressed() {
super.onBackPressed();
// Close B
// Close C
}
用於從一個活動將數據傳遞到另一個覆蓋後退按鈕時,可以使用Intent.putExtra()
(從A發送到B,C),並使用onActivityResult()
+ setResult()
用於將其傳回A.
您需要什麼。翻轉返回按鈕,以便您可以調用所需的活動? – Rasel