2012-07-30 71 views
3

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

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

任何人都可以帮助我。

这里是我的EditText

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

对话框ceation代码:

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; 
     } 
    }); 
+0

请粘贴'AlertDialog'创建部分 – sunil 2012-07-30 07:03:51

+0

@sunil的代码,请参阅我的更新问题。 – 2012-07-30 07:07:42

回答

8

你有任何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;)

+0

你是我的节省时间...超过3小时寻找这个确切的修复.. – 2017-07-15 10:04:12

1

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

0

不应该KEYCODE_BACK但KEYCODE_DEL代替。它适用于你的情况。