1
    public boolean onKeyDown(int keyCode, KeyEvent event) 
    {
        if(this.keyHandler != null) this.keyHandler.onKeyDown(keyCode, event);
        return super.onKeyDown(keyCode, event);
    }

これは、私の OpenGL Surface ビュー内のメソッドです。キーボードが表示されている場合、すべてのキーを押すと、このオーバーライドされたコールバック関数が呼び出されます。Asus TF101 (Android 4.0.4) でテストしましたが、すべて動作しましたが、LG nexus 4 ではバックスペース (KEYCODE_DEL) キーを押しても何も起こりません!

足りないものはありますか?

編集:また、アクティビティ クラスで dispatchKeyEvent(KeyEvent event) をオーバーライドしようとしましたが、バックスペース キーがキャッチされません。

4

2 に答える 2

1

デフォルトの Google キーボード (LatinIME) での KEYCODE_DEL 生成に影響を与える 2 つの個別のバグ (問題 42904 および 62306) があります。キーボードのバージョンによって、1 つのバグがあり、別のバージョンがあり、どちらもないバージョンもあります。そのため、問題が発生するデバイスと発生しないデバイスがあります。デバイスにインストールされている Google キーボードのバージョンによって異なります。

私はこれを調査し、コードを使用して、これらの問題の両方を回避できるように思われる回避策を考案しました。回避策を提示する投稿では、それらがどこでどのように発生するかについても説明しています。その投稿はここにあります:

Android - ソフトでバックスペース/削除プレスをキャプチャできません。キーボード

于 2014-01-17T04:41:16.527 に答える
-1

バックキーをキャッチして、バックが押されたときにトリガーされるこのメソッドを使用することができます。 http://developer.android.com/reference/android/app/Activity.html#onBackPressed()

使用できます

super.onBackPressed();

あなたのメソッドで、またはクリックしたときに他のことをするようにオーバーライドすることができます

@Override
public void onBackPressed() 
{
       // your instructions
}
于 2013-08-30T15:33:38.103 に答える