2011-12-15 19 views
0

我有一個活動A,它以一個意圖啓動B。 (B是MapActivity,並有一些異步代碼)即使我在BackButton上調用FINISH,Android仍會恢復我的活動

在乙

我有以下代碼

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    // TODO Auto-generated method stub 
if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
//   Log.d(this.getClass().getName(), "back button pressed"); 

    finish(); 
    return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 

這根本不起作用。我的意思是,當我按下手機上的後退按鈕時,當前活動B將消失,並顯示啓動B的活動A.

如果我再按一次啓動B的按鈕,我會看到B正好是我關閉它時的樣子。文本框中的相同文本,相同的地圖位置......所以我認爲活動B並沒有真正關閉。

我怎樣才能關閉它,所以當我再次啓動它時,活動B就像新生兒一樣清澈?

編輯:只是爲了使問題更清楚: 我希望它的工作是這樣的:當用戶在活動B和BACK按鈕被按下,B必須被關閉和銷燬。當用戶再次從A啓動B時,B必須作爲NEW活動啓動,具有空白字段,重置地圖等,...就像用戶首次從A啓動B一樣。

+0

請在onCreate/onPostCreate/onResume上顯示活動B,以及如何從A – logcat 2011-12-15 19:35:31

回答

0

正如我在我的帖子最後評論說,@Jianhong給了我正確的答案(aslso如果作爲一條評論)。由於他沒有及時將評論複製爲答案,我添加了該答案並將其標記爲「已接受」。謝謝@Jianhong!

回答: @Jianhong OMG!你完全正確!我在過去幾天檢查了這個問題,但我無法找到它...我沒有從SVN更新過。我的同事通過一些靜態變量插入預填字段的代碼行!

0

您是否嘗試過通過調用A中的startActivityForResult()來激活B?

在B中進行所有處理,然後確保您完成處理並清除其中的所有數據。

請讓我知道它是否有效。

0

很明顯。 OnSaveState在完成活動時被調用,並且此活動從堆棧中彈出。要清除這種情況,最佳做法是在兩個活動中記錄所有生命週期事件,這將有助於確定將B活動初始化的位置。

是的,還有一件事嘗試研究onNewIntent在B活性的方法,我想這將是真正的幫助

相關問題