7

AlertDialogビューとしてa を設定してXMLいる があります。その中でxml layout私は持っていEditTextます。しかし、にデータを入力した後EditText、バックスペースを使用して削除しようとすると、文字が削除されません (バックスペースのようなものは機能しません)。

何か不足していますか?検索しましたが、キーリスナーを追加する以外に適切な解決策はありませんでした。シンプルに動作するはずだと思いますか?

誰でも私を助けてくれます。

これが私のEditText

<EditText
        android:id="@+id/TextBox"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="text">
        <requestFocus />
</EditText>

ダイアログ作成コード:

hintDialog = new AlertDialog.Builder(activity)
    .setTitle("Enter Your Hint:")
    .setView(hintDialogView).create();
    hintDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
      @Override
      public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK)
        hintDialog.dismiss();
        return true;
      }
    });
4

3 に答える 3

15

onKeyListeners を設定していますか? これが問題の原因である可能性があります。

これを試して:

 hintDialog = new AlertDialog.Builder(activity)
.setTitle("Enter Your Hint:")
.setView(hintDialogView).create();
hintDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
  @Override
  public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
    if(keyCode == KeyEvent.KEYCODE_BACK)
    hintDialog.dismiss();
    return true;
  }
  return false;
});

(return false; を追加)

于 2012-07-30T07:10:24.077 に答える
1

KeyEvent.KEYCODE_BACK リスナーはありますか? キー イベントを処理するために呼び出されます。これをオーバーライドして、ウィンドウにディスパッチされる前にすべてのキー イベントをインターセプトできます。通常どおり処理する必要がある重要なイベントに対して、この実装を必ず呼び出してください。dispatchKeyEvent メソッドをオーバーライドすると、戻るときに super.dispatchKeyEvent(event) を呼び出す必要があります。

于 2012-07-30T07:07:29.700 に答える