如何“取消”按钮按下?

时间:2016-07-24 07:22:05

标签: android alertdialog

我目前正在尝试使用AlertDialogs。

目前,我的AlertDialog中有一个EditText,并希望将输入限制为仅整数。我使用了一个基本的try和catch块来避免应用程序崩溃形成NumberFormatException。

但是,我想进行设置,以便当用户尝试按下输入错误的按钮时,输入不会注册,对话框也不会被取消。

UpperLimitDialog.setPositiveButton(R.string.Positive_Button, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int i) {
                        int RawInput = settings.getInt("UpperLimit", 12);
                        try {
                            RawInput = Integer.parseInt(input.getText().toString());
                        }catch (NumberFormatException se) {
                            Toast.makeText(SettingsMenu.this, "Non-Integer Value, No Input", Toast.LENGTH_SHORT).show();
                        //Here I want the app to not register the click and prevent the dialog box from closing.
                        }
                        editor.putInt("UpperLimit", RawInput);
                        editor.apply();
                        Toast.makeText(SettingsMenu.this, "Set Upper Limit to " + RawInput, Toast.LENGTH_SHORT).show();
                    }
                });

我可以用什么方法来实现这个目标?

4 个答案:

答案 0 :(得分:3)

这里的基本技巧是使用对话框的setCancelablefalse,并仅在输入经过验证时调用dismiss()

此处有更多信息:AlertDialog with positive button and validating custom EditText

答案 1 :(得分:2)

使用可以通过Java或XML实现input to only Integers

  

爪哇

editText.setInputType(InputType.TYPE_CLASS_NUMBER);
  

XML

android:inputType = "numberSigned"

这可能会对你有所帮助。

答案 2 :(得分:1)

如果您将用户限制为仅允许号码,则可以尝试使用 -

  

机器人:的inputType = “数量”

如果您想允许使用浮动数字,请尝试使用 -

  

机器人:的inputType = “numberDecimal”

在任何情况下,如果你想禁用对话框按钮,那么试试这个 -

Button theButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
theButton.setEnabled(false);

适合你:)

答案 3 :(得分:0)

只需在EditText的xml代码中使用:

android:inputType="numberSigned"

这将允许用户仅输入整数。希望这有帮助!