2011-03-04 14 views
2

私のアプリケーションでキャンセルできないダイアログが表示されますが、ユーザーが[検索]ボタンを押すとキャンセルされます。 onSearchRequestedとonKeyDownをオーバーライドしようとしましたが、それは役に立ちません。なにか提案を? KEYCODE_SEARCHは(それが起こらなかったかのように)キーを押して、誤っただけでブロックを返す検索ボタンでキャンセル不可能なダイアログをクリックします。

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 

    char c = (char) event.getUnicodeChar(); 

    if (c == KeyEvent.KEYCODE_SEARCH) { 
     return false; 
    } else { 
     return super.onKeyDown(keyCode, event); 
    } 
} 

falseを返すようにするために

答えて

3

私もこの問題に遭遇し、Jamasanの解決策は私のためには機能しませんでした。私の代わりに(ダイアログを拡張する)私のカスタムダイアログクラスに次のコードを追加しました:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_SEARCH) { 
     return true; 
    } else { 
     return false; 
    } 
} 

のkeyCodeとKeyEvent.KEYCODE_SEARCHはint型の両方です。 onKeyDownのドキュメントには、

と表示されています。イベントを処理した場合はtrueを返します。 イベントを次の受信者が処理できるようにする場合は、 falseを返します。

私のために働きます。

0

上書き活動のonKeyDownイベントの発生時、およびチェック。それ以外の場合、super.onKeyDown(..)を実行するだけで定期的に処理されます。

幸運。

関連する問題