Я в основном настраиваю деятельность по сбору информации.У него есть радиогруппа для выбора пола и редактирования текстов для имени и возраста.
Я реализовал и onCheckedChangeListener для радиогруппы, и textChangedListener для редактирования текстов, так что следующая кнопка активна только тогда, когда обаТексты заполнены, и переключатель отмечен.Однако, это работает только таким образом, когда переключатель установлен, тогда тексты заполнены, но не иначе.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.basic_info);
nameTxt = findViewById(R.id.name);
ageTxt = findViewById(R.id.age);
nextBtn = findViewById(R.id.next);
nextBtn.setEnabled(false);
gender = findViewById(R.id.gender);
nameTxt.addTextChangedListener(watcher);
ageTxt.addTextChangedListener(watcher);
gender.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
onChecked = true;
}
});
}
private final TextWatcher watcher = 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 (nameTxt.getText().toString().length() == 0 || ageTxt.getText().toString().length() == 0 || onChecked == false) {
nextBtn.setEnabled(false);
} else {
nextBtn.setEnabled(true);
}
}
};
Я ожидал, что оба слушателя будут работать независимо (что выполнение в любом порядке дасттот же результат).Я могу ошибаться, поскольку я относительно новичок в Android Studio.