2010-04-07 14 views
18

我有兩個活動A和B.當我點擊A中的按鈕將顯示B.當我點擊B中的按鈕時,它支持A.我在finish()方法後設置了overridePendingTransition方法。它工作正常。但如果當前的活動是B.那時我點擊設備中的默認後退按鈕。它顯示從右到左的過渡,以顯示活動A.在android中有一個默認的後退鍵(在設備上)偵聽器嗎?

我怎麼能聽到設備上的默認返回鍵?

編輯:

Log.v(TAG, "back pressed"); 
finish(); 
overridePendingTransition(R.anim.slide_top_to_bottom, R.anim.hold); 

回答

39
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
     // do something on back. 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 

以下鏈接是關於如何處理返回鍵事件,由Android開發自己寫了一個詳細的解釋:

Using the back key

+0

不工作....我不能在logcat本身上打印語句。 – Praveen 2010-04-07 12:36:45

+0

你可以編輯你的問題來顯示你現在有問題的代碼嗎?我們中的一個可能能夠幫助 – 2010-04-07 13:31:09

+0

,只需將您的代碼片段複製並粘貼到我的活動課程中即可。只需將// do somthing替換回我的編輯代碼片段即可(請參閱問題)。 – Praveen 2010-04-07 13:37:07

2
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if(keyCode == KeyEvent.KEYCODE_BACK){ 
     //Do stuff 
    } 

    return super.onKeyDown(keyCode, event); 
} 
21

For And固醇2.0及更高版本,沒有在活動類的具體方法:

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    // Do extra stuff here 
} 
+2

這是Android 2.x的首選方法。但是,對於早期版本的Android,您仍然需要使用'onKeyDown()'。 – CommonsWare 2010-04-07 12:36:22

+0

不能正常工作....我無法在logcat上打印語句。我曾經使用過這兩種方法。 – Praveen 2010-04-07 13:06:07

0

我用這個代碼與媒體播放器的活動。當用戶按下後退按鈕時,我需要停止播放,但仍然能夠返回到上一個活動。

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
     // do something on back. 
     try{ 
      mp.stop(); //this line stops the player 
      return super.onKeyDown(keyCode, event);//this line does the rest 
     } 
     catch(IllegalStateException e){ 
      e.printStackTrace(); 
     } 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); //handles other keys 
} 
相關問題