我正在尝试获取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) {
}
}
}
然而,在属性中我
答案 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);