用于编辑文本最小字符的对话框过滤器

时间:2013-10-19 00:18:01

标签: android android-dialog

我已经设置了一个带有一个编辑文本框的对话框。我使用了一个集合过滤器来获得最大数量的结构,但是我没有看到最小的过滤器。如果用户输入少于8个字符,我添加了代码以在输入的文本中添加“x”。代码编译但崩溃。 并抛出错误是“字符串长于9”。并给出(16为piece.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;

1 个答案:

答案 0 :(得分:0)

我不明白为什么你这样做:for(int i = 0; i&lt; strEditText.length(); i ++)

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

抱歉我的英文不好..