Android:EditText的实时字符数

时间:2014-12-26 13:33:11

标签: java android

我正在尝试获取EditText(numberRoom)的字符数。当用户插入8个字符时,按钮应从禁用状态和颜色0xBBFFFFFF切换到状态Enabled和颜色0xFFFFFFFF。 我尝试了很少的方法,我认为我发现的最好的方法是下面的方法。但是,即使输入为空,按钮的状态也为Enabled,颜色为0xFFFFFFFF。那里有什么不对?

public class Join_room_screen extends Activity {

    EditText numberRoom;
    Button goToRoom;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.joinroom);

        numberRoom = (EditText) findViewById(R.id.roomNumber);
        goToRoom = (Button) findViewById(R.id.goToRoom);

        TextWatcher watcher = new LocalTextWatcher();
        goToRoom.addTextChangedListener(watcher);
        updateButtonState();
    }

    void updateButtonState() {
        boolean enabled = checkEditText(numberRoom);
        goToRoom.setBackgroundColor(0xFFFFFFFF);
        goToRoom.setEnabled(enabled);
    }

    private boolean checkEditText(EditText edit) {
        return ((edit.getText().toString()).length() == 8 );
    }

    private class LocalTextWatcher implements TextWatcher {
        public void afterTextChanged(Editable s) {
            updateButtonState();
        }

        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }

        public void onTextChanged(CharSequence s, int start, int before, int count) {
        }
    }


}

然而,在属性中我

2 个答案:

答案 0 :(得分:0)

在此函数中,从不使用enabled变量,因此始终设置背景颜色和启用状态。

void updateButtonState() {
    boolean enabled = checkEditText(numberRoom);
    goToRoom.setBackgroundColor(0xFFFFFFFF);
    goToRoom.setEnabled(enabled);
}

我会用

之类的东西替换
void updateButtonState() {
    boolean enabled = checkEditText(numberRoom);
    if (enabled) {
        goToRoom.setBackgroundColor(0xFFFFFFFF);
        goToRoom.setEnabled(enabled);
    } else {
        //change them back to disabled state
    }
}

答案 1 :(得分:0)

您在updateButtonState()中遇到一个问题,它总是为您的按钮设置一种颜色。我明白了,你已经解决了这个问题。 另一个问题是你将TextChangeListener设置为不是EditText,而是设置为Button。 应该观看EditText。

numberRoom.addTextChangedListener(watcher);

而不是

goToRoom.addTextChangedListener(watcher);