ソフトキーボードが開いているときにnexus電話機の小さな逆さま三角形をユーザーが押したときに呼び出されるKeyEventアクションが不思議です。ノーマルモードネクサスで戻るボタンを押したときにネクサスの電話機が起動するキーアクションはどれですか?
は、次のようになり、通常のコードは正常に動作します: Nexus without keyboard
しかし、キーボードがポップアップしたときに、それはこのようになりますと、コードが動作しません。
ソフトキーボードが開いているときにnexus電話機の小さな逆さま三角形をユーザーが押したときに呼び出されるKeyEventアクションが不思議です。ノーマルモードネクサスで戻るボタンを押したときにネクサスの電話機が起動するキーアクションはどれですか?
は、次のようになり、通常のコードは正常に動作します: Nexus without keyboard
しかし、キーボードがポップアップしたときに、それはこのようになりますと、コードが動作しません。
Android APIの最大数5:
@Override
public void onBackPressed() {
// your code.
}
API 5より前のAndroidの場合は、次の値を使用する必要があります。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// your code
return true;
}
return super.onKeyDown(keyCode, event);
}
How to handle back button in activity
EDITを参照してください:
この方法は、キーボードが非表示になっている場合にのみ機能しますが..
この回答によると:Detect back key press - When keyboard is open
最高実装するアクションはdispatchKeyEventPreImeです。 例は次のとおりです。mActivityは、あなたの活動のクラスである
@Override
public boolean dispatchKeyEventPreIme(KeyEvent event) {
Log.d(TAG, "dispatchKeyEventPreIme(" + event + ")");
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
KeyEvent.DispatcherState state = getKeyDispatcherState();
if (state != null) {
if (event.getAction() == KeyEvent.ACTION_DOWN
&& event.getRepeatCount() == 0) {
state.startTracking(event, this);
return true;
} else if (event.getAction() == KeyEvent.ACTION_UP
&& !event.isCanceled() && state.isTracking(event)) {
mActivity.onBackPressed();
return true;
}
}
}
return super.dispatchKeyEventPreIme(event);
}
(これ)。
私が言ったように、エミュレータで私はキーボードが存在するときに使用しますこのコードは動作しません! –
キーボードが開いているとき、またはアクションが実行されていないときに、デバッガはそのコードを入力しますか? –
2枚の写真を追加して質問を更新しました。 –
@Override公共ボイドonBackPressed(){} – JCDecary
キーボードが隠され、左側に三角形の点は私はKeyEvent.KEYCODE_BACK得るが、キーボードの存在下では、私はない場合、私はにonKeyDown()を使用@JCDecaryそれは何が起こるか知っている! –
多分これはあなたを助けるでしょう:http://android-developers.blogspot.ca/2009/12/back-and-other-hard-keys-three-stories.html。あなたが望むものを私はしません – JCDecary