1 つの編集テキスト ボックスを含むダイアログ ボックスを設定しました。許可される文字の最大数にセット フィルターを使用しましたが、最小のフィルターが表示されません。ユーザーが 8 文字未満を入力した場合、入力したテキストに "x" を追加するコードを追加しました。コードはコンパイルされますが、クラッシュします。エラーは「9より長い文字列」をスローします。そして (piece.length() として 16) を与えます。解決に役立つ可能性があります
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;