这是我的问题,我正在设计一个应用程序,我使用两个编辑文本和按钮,所以当我使用最大长度为4的输入过滤器并将焦点设置为其他编辑文本,当我写,焦点传递给第二个编辑文本,但它没有写入我输入的东西而不是它继续写入第一个。
有没有办法只在第一个编辑文本停止写入4个字符,然后写入第二个而不改变第一个谢谢。
这是我的问题代码的一部分:
String inDigit = ((Button) view).getText().toString();
//Costo de venta
if (inStr.equals("0")) {
inStr = inDigit;
} else {
inStr += inDigit;
}
int maxLength = 4;
InputFilter[] FilterArray = new InputFilter[1];
FilterArray[0] = new InputFilter.LengthFilter(maxLength);
editX.setFilters(FilterArray);
editX.setText(inStr);
if(editX.getText().toString().length() == 4)
{
if(editX.hasFocus()){
editY.requestFocus();
return;
}
}else {
editY.getText().toString();
editY.setText("");
}
if (lastOperator == '=') {
result = 0;
lastOperator = ' ';
}
答案 0 :(得分:1)
有没有办法只在第一个编辑文本停止写入4个字符,然后写入第二个而不改变第一个
是。假设您有第一个EditText被称为edit
,第二个是类变量edit2
。一旦超过第四个字符,我们将使用TextWatcher将焦点从edit
切换为edit2
:
edit.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void afterTextChanged(Editable s) {
if(s.length() == 4) {
edit2.requestFocus();
}
}
});