2011-10-13 209 views
4

解決!後退按鈕關閉兩個活動?

我的活動堆棧看起來像這樣,請原諒圖表!

A-->B-->C 
    '-->D 

如果我按回到活動B按鈕,我回去A預期。
但是,如果我按下活動CD中的按鈕,我將返回A而不是B。 在我的腦海裏,這可以通過兩件事情
1)當它打開了CD
2的意圖活動B退出引起的)的後退按鈕以某種方式被稱爲兩次?

我仔細觀察了活動B中的點擊聽衆,他們開始期望在那裏找到finish()呼叫,但是沒有。
我還檢查onBackPressed()活動方法CD以查看我是否手動打開活動A ...但我不是。

這裏的活動A

protected void onResume() { 
     super.onResume(); 
     screenOn(SCREEN_ON_DURATION); 
     mWakeLock.acquire(); 

    } 

這裏的方法的onResume就是我開始意圖C和d

  Bundle info = new Bundle(); 
      info.putString("classId", ""+classId); 


      Intent intent = new Intent(Notebook.this, StudentChooser.class); 
      intent.putExtras(info); 

      Notebook.this.startActivity(intent); 

誰能幫助的方式嗎?

編輯:我發現我的onUserLeaveHint()完成()這就是問題所在!

+0

你可以在模擬器內部複製這個問題嗎?確保您的設備正常。你是否在任何地方重寫onBackPressed()或onResume()? – ntkachov

+0

你提出了什麼意圖參數活動B?也許你從堆棧中刪除它? – xandy

+0

還有一點要檢查:B的onActivityResult。如果你用'startActivityForResult()'和B的'onActivityResult()'調用'finish()'來打開D,當D關閉時B將被關閉。 – kingori

回答

3
The reason may be that you are using finish() in your previous activity,For example 
A->B->C 
      Intent intent = new Intent(B.this, C.class); 
      startActivity(intent); 
      finish(); 

finish() is destroying B activity hence the control is going on activity A on back button