アプリケーションにキャンセル不可のダイアログを表示していますが、ユーザーが検索ボタンを押すとキャンセルされます。onSearchRequestedとonKeyDownをオーバーライドしようとしましたが、役に立ちません。なにか提案を?
1223 次
2 に答える
3
私もこの問題に遭遇しました、そして、ジャマサンの解決策は私のために働きませんでした。代わりに、カスタムダイアログクラス(Dialogの拡張)に次のコードを追加しました。
@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を返します。
私のために働きます。
于 2011-03-28T15:57:39.943 に答える
0
アクティビティのonKeyDownイベントをオーバーライドし、KEYCODE_SEARCHがfalseを返すかどうかを確認します
@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を返すと、そのキーの押下がブロックされます(発生しなかったかのように)。それ以外の場合、super.onKeyDown(..)を実行すると、定期的に処理されます。
幸運を。
于 2011-03-04T23:53:56.757 に答える