0

这是我的问题,我正在设计一个应用程序,我正在使用两个编辑文本和按钮,所以当我使用最大长度为 4 的输入过滤器并将焦点设置为其他编辑文本时,当我编写时,焦点传递到第二个编辑文本,但它没有写 en 我输入了一些东西,而是在第一个中继续写。

有没有办法在第一个编辑文本中只放 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 = ' ';
    }
4

1 回答 1

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();
        }
    }
});
于 2012-10-04T20:38:55.437 回答