我有一个对话框 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/