我已經做出了顯示確認對話框的邏輯,當用戶通過重寫backPressed方法按下按鈕時,但這意味着一個不尋常的行爲。如果顯示軟輸入鍵盤,則在後退鍵事件中必須隱藏,而其他後退鍵事件必須啓動確認對話框。有辦法做到這一點?也許通過檢測軟輸入鍵盤是否啓動並繞過確認對話框?如何處理壓縮(keyDown - 在以前的版本),以顯示退出應用程序的確認對話框?
下面是一個代碼示例來說明這一點:
public boolean onKeyUp(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK)
{
//here is the mystery
if (soft keyboard is visible)
{
return super.onKeyUp(keyCode, event);
} else
{
//method which shows the close dialog and close the application
onBackPressed();
return true;
}
}
return super.onKeyUp(keyCode, event);
}
是的,你說得對。一個真正的問題是,我已經overKey既onKeyDown和onKeyUp,並使雙重backPressed被稱爲。現在我只有onKeyDown overrided和軟鍵盤消耗事件。另一個奇怪的行爲已經遇到,那就是當一個新的後退鍵事件被捕獲時,onBackPressed被忽略。我必須處理它。謝謝你的好幫手。 –