2011-07-27 86 views
0

爲了保持簡單,我有3個屏幕。 A,B和C. 可以從屏幕A. 訪問屏幕B或C可以從畫面B 訪問畫面C可以從畫面C管理屏幕流程

從畫面A

數據訪問屏幕B被傳遞到B和C

我所希望做的是建立在屏幕上B和C,其中一個按鈕,曾經他們是拿着它回到了屏幕A.我並不想開始一個新的活動,因爲它需要它創造

數據

也有一種方法可以否決手機上的後退按鈕。即如果在屏幕C上它回到A,即使用戶點擊B然後C?

感謝您的時間

+0

您需要什麼。翻轉返回按鈕,以便您可以調用所需的活動? – Rasel

回答

0

一個建議是使用結果和startActivityForResult()工作。

如果您是來自B的C,並且您點擊按鈕轉到A,您可以設置結果意圖;

Intent result = new Intent(); 
result.putExtra("gotoA", true); 
setResult(RESULT_OK, result); 
finish(); 

然後通過重寫onActivityResult(),並檢查意圖額外趕上結果B,然後完成B.

+0

不是100%肯定清楚這一點。您將該代碼添加到startActivityforresult()的屏幕C或A上? –

+0

你用startActivityForResult()從B開始C,在buttonA按鈕上設置結果(顯示代碼)在C處,然後重寫B中的onActivityResult()以處理結果,並且當結果數據的gotoA爲真時(這只是一個標誌我編了),你可以在那裏調用finish(),它會返回到A. 這些活動由堆棧管理,所以它的FIFO。 – MrJre

-1

是的,你可以重寫後退按鈕做什麼(它不是,雖然一個很好的做法)。您將需要重寫onBackPressed()方法ActivityC這種方法中

Intent homeIntent=new Intent(this,ActivityA.class); 
    homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(homeIntent); 

編輯:見FLAG_ACTIVITY_CLEAR_TOP只是如果它不存在,它會創建活動的文檔,並且將清除的頂部所有活動它。您也可以將此數據傳遞給ActivityA。

+0

這會覆蓋從A傳遞的數據的Arraylist還是需要將Arraylist傳遞迴A? –

+0

你的問題讓我困惑......我不確定你在做什麼,但我不認爲你需要傳回ArrayList。 –

0

可以通過重新實現onBackPressed

public void onBackPressed() { 
    super.onBackPressed(); 

    // Close B 
    // Close C 
} 

用於從一個活動將數據傳遞到另一個覆蓋後退按鈕時,可以使用Intent.putExtra()(從A發送到B,C),並使用onActivityResult() + setResult()用於將其傳回A.