我目前正在尝试使用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();
}
});
我可以用什么方法来实现这个目标?
答案 0 :(得分:3)
这里的基本技巧是使用对话框的setCancelable
至false
,并仅在输入经过验证时调用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"
这将允许用户仅输入整数。希望这有帮助!