2011-10-01 199 views
0

在我的應用程序中,我有一個按鈕,如果用戶單擊屏幕上顯示的文本框 (我使用從可見性設置可見性)。 我遇到的問題是當用戶按下設備上的BACK按鈕時:它關閉我的應用程序。Android後退按鈕

有什麼辦法,當用戶按下返回按鈕比我的代碼將被調用(所以我可以設置可見性GONE)?

回答

1

因爲API 1級以下工作:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     //Do whatever you want 
     //AND 
     //return true to tell the framework you did handle the back key 
     return true; 
    } 
    //This is not the back key, just ask the framework to behave as usual. 
    return super.onKeyDown(keyCode, event); 
} 

從API級開始5(安卓2.0),你也可以使用:

@Override 
public void onBackPressed() { 
    // Do something (or nothing) here 
    return; 
} 

一個完整的概述,請參閱this android developer blog message

+0

當我們沒有調用超類方法時,默認完成將不起作用super.onKeyDown(keyCode ,事件)看看我的代碼; –

+0

@ArpitGarg,你的意思是返回'onKeyDown'上面的'false'不會'finish()'Activity? –

+0

謝謝, 我用你的代碼,它工作正常。 – Belgi

1

用您所需的功能覆蓋onBackPressed()

默認實現只是調用finish()來關閉當前活動。

+0

_注意:_此操作僅適用於Android 2.0及更高版本。 (API等級5) –

+0

是的,忘記了。這就是爲什麼你從我這裏得到一個贊成的原因。 :) – 2011-10-01 14:53:35

0
public boolean onKeyDown(int keyCode, KeyEvent keyEvent) { 

     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      // Put your code here 
     } 

     return true; 

    } 
+1

**小心!**您在這裏無條件地返回true,您恰好取消_every_ keypresses。這是不好的,如果你嘗試使用'EditText' :) –

+0

謝謝,,,你是正確的返回true將取消每個按鍵 –