android - 如何处理警报对话框中的无效输入?

标签 android android-fragments dialog android-alertdialog

我有一个对话框 fragment ,允许用户指定一些文本以及文本的位置。

dialog fragment

我想限制用户输入超过字符数上限的文本。 我可以限制最大字符输入吗?否则,我可以在这段代码中的哪里添加检查以确保文本小于 LIMIT? 这是代码:

public Dialog onCreateDialog(Bundle savedInstanceState) {
    // Use the Builder class for convenient dialog construction
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    final CharSequence[] items = {"Above", "Below"};
    capPos = Position.ABOVE;

    final EditText input = new EditText(getActivity());
    input.setInputType(EditorInfo.TYPE_CLASS_TEXT);
    input.setHint("Add caption here");
    builder.setView(input);

    builder.setTitle(R.string.dialog_caption)
           .setPositiveButton(R.string.proceed, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                text = input.getText().toString();
                mListener.onDialogPositiveClick(CaptionFragment.this);
               }
           })
           .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   mListener.onDialogNegativeClick(CaptionFragment.this);
               }
           })
            .setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id){
                    if ("Above".compareTo(items[id].toString()) == 0){
                        capPos = Caption.Position.ABOVE ;
                        Log.i("CaptionFragment", "Above");
                    }else if ("Below".compareTo(items[id].toString()) == 0){
                        capPos = Caption.Position.BELOW;
                        Log.i("CaptionFragment", "Below");
                    }
                }
            });
    // Create the AlertDialog object and return it
    return builder.create();
} 

最佳答案

所以它是一个EditText。您可以使用属性 android:maxLength 来限制字符数,如下所示 https://stackoverflow.com/a/3285421/655987

另一种选择是让用户输入他/她想要的任何内容,然后检查背景。

您可以在 OnClickListener 中执行此操作。如果您只想在用户单击肯定按钮时检查该值(通常是这种情况),那么您应该按如下方式执行操作:

...
.setPositiveButton(R.string.proceed, new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int id) {
            text = input.getText().toString();
            if(text.equals("ads"))  //For example
                ...
           }
       })
...

此外,您可以首先将肯定按钮的 onClickListener 设置为 null,然后覆盖它,如下所示 https://stackoverflow.com/a/7636468/655987

这取决于你。

关于android - 如何处理警报对话框中的无效输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23691005/

相关文章:

android - 如何将带圆圈的计数器添加到抽屉导航中的项目

java - 在 Android 屏幕旋转后,是否有适当的方法来保留带有自定义对象列表的对话框?

java - fragment 充气器错误

java - 将图像存储在 SharedPreferences 中

Android:自定义 View 在错误的 x、y 坐标处绘制

android - 方向改变时未加载不同的 fragment (android)

jquery - CKEditor 将 css 应用于对话框 html 元素内容

android - 当我尝试创建另一个对话框时,我的应用程序崩溃了

Android:从选项菜单打开自定义弹出对话框

android - locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);返回空指针异常