7

我有一个AlertDialog,我在其中设置 aXML作为它的视图。在那xml layout我有一个EditText. 但是在输入数据后EditText,如果我尝试使用退格键删除,字符不会被删除(它就像退格键不起作用)。

我错过了什么吗?我进行了搜索,但除了添加 keylistener 之外没有得到任何合适的解决方案。我认为它应该工作简单?

任何人都可以帮助我。

这是我的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;
});

(添加返回 false;)

于 2012-07-30T07:10:24.077 回答
1

你有 KeyEvent.KEYCODE_BACK 监听器吗?调用以处理关键事件。您可以覆盖它以在所有关键事件被分派到窗口之前拦截它们。确保为应该正常处理的关键事件调用此实现。当您覆盖 dispatchKeyEvent 方法时,您必须在返回时调用 super.dispatchKeyEvent(event)。

于 2012-07-30T07:07:29.700 回答
0

不应该 KEYCODE_BACK 而是 KEYCODE_DEL 。它在你的情况下肯定有效。

于 2013-02-20T15:44:59.337 回答