2
在一個文字遊戲爲Android與DrawerLayout左,右導航抽屜是由下面的代碼在MainActivity關閉:處理後退按鈕自定義視圖中
@Override
public void onBackPressed() {
if (mDrawerLayout.isDrawerOpen(mLeftDrawer)) {
mDrawerLayout.closeDrawer(mLeftDrawer);
} else if (mDrawerLayout.isDrawerOpen(mRightDrawer)) {
mDrawerLayout.closeDrawer(mRightDrawer);
} else {
super.onBackPressed();
}
}
這非常適用(左側截圖) -
但是我也試圖檢測後退按鈕按下在我的自定義視圖(這將覆蓋onDraw
方法通過以下方法來繪製滾動遊戲板和字母磚) - (允許應用程序用戶取消瓷磚交換或從遊戲板上回顧放過的磚) - 但沒有人叫:
@Override
public boolean dispatchKeyEventPreIme(KeyEvent event) {
if (mSwapping && event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
cancelSwapLetters();
return true;
}
return super.dispatchKeyEventPreIme(event);
}
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
if (mSwapping && keyCode == KeyEvent.KEYCODE_BACK) {
cancelSwapLetters();
return true;
}
return super.onKeyPreIme(keyCode, event);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (mSwapping && keyCode == KeyEvent.KEYCODE_BACK) {
cancelSwapLetters();
return true;
}
return super.onKeyDown(keyCode, event);
}
我有在上述方法中加入了斷點,但沒有一個被擊中。
請告訴我,如何解決這個問題。
調用'setFocusableInTouchMode(真)'和'requestFocus()方法'在我的自定義視圖,所有3種方法已經經過按此順序調用:'dispatchKeyEventPreIme','onKeyPreIme','onKeyDown'。謝謝 –
很高興我能幫到你。乾杯! – vaibhav
在DialogPlus庫中,不存在'setFocusableInTouchMode'。他不確定? –