【问题标题】:How do I handle invalid input in an alert dialog?如何处理警报对话框中的无效输入?
【发布时间】:2014-05-16 00:54:48
【问题描述】:

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

我想限制用户输入大于某个字符上限的文本。 我可以限制最大字符输入吗?否则,我可以在此代码中的何处包含检查以确保文本小于 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();
} 

【问题讨论】:

    标签: android android-fragments dialog android-alertdialog


    【解决方案1】:

    所以它是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

    这取决于你。

    【讨论】:

      【解决方案2】:

      试试这个,

      final EditText input = new EditText(getActivity());
          input.setInputType(EditorInfo.TYPE_CLASS_TEXT);
      input.setFilters(new InputFilter[] {
                  new InputFilter.LengthFilter(LIMIT) });
          input.setHint("Add caption here");
          builder.setView(input);
      

      【讨论】:

        猜你喜欢
        • 2014-07-07
        • 2019-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-27
        • 1970-01-01
        • 2011-05-15
        相关资源
        最近更新 更多