【问题标题】:Dialog box filter for edit text minimum charatures用于编辑文本最小字符的对话框过滤器
【发布时间】:2013-10-19 00:18:01
【问题描述】:

我已经设置了一个带有一个编辑文本框的对话框。我对允许的最大字符数使用了一个设置过滤器,但我没有看到最小的过滤器。如果用户输入少于 8 个字符,我添加了代码以在输入的文本中添加“x”。代码编译但崩溃。 并抛出错误是“字符串长于 9”。并给出 (16 aspiece.length())。可以帮忙解决一下

      public void onClick(View item) {

  final EditText input = new EditText(this);

  switch (item.getId()) {
  case R.id.textView1:
  strEditText = Title1.getText().toString(); // OK

  input.setText(strEditText);
  input.setFilters(new InputFilter[] { new InputFilter.LengthFilter(8) }); // Set max # of charactures for Input


        for (int i = 0; i < strEditText.length(); i++) {                            //
            String piece = strEditText;                                             //

            String toBeAdded = "";                                                  //
            if (piece.length() < 8) {
                int length = piece.length();
                toBeAdded = piece;
                while (length < 8) {
                    toBeAdded = toBeAdded + "X";
                    length++;
                }
            } else if (piece.length() > 8) {
                throw new IllegalArgumentException("Error, string longer than 9");
            } else {
                toBeAdded = piece;
            }
            strEditText = strEditText + toBeAdded;

        }// return to for-loop                                                      //

        new AlertDialog.Builder(ElsEditTitles.this)

        .setTitle("Ttile").setView(input).setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {

                strReturn = input.getText().toString();
                Title1.setText(strReturn);

            }
        }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                // Do nothing.
            }
        }).show();

        break;

【问题讨论】:

    标签: android android-dialog


    【解决方案1】:

    我不明白你为什么把这个用于:for (int i = 0; i

    例如,如果 EditText 是 'abc' strEditText 是 'abc' 并且重复 3 次。 在第一次 toBeAdded = 'abcXXXXX' 和代码“strEditText = strEditText + toBeAdded;”时运行 strEditText = 'abcabcXXXXX' ,当 That for 进入第二个循环时,它已经超过 8 个字符并抛出你的错误。

    对不起我的英语不好..

    【讨论】:

    • 这是造成错误的原因。谢谢,我会发布我所做的更改以供参考。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多