Edittext и RadioButton в Android

У меня есть два поля EditText и RadioGroup, которые содержат два переключателя. Когда я начинаю вводить ввод в любом из полей редактирования текста, все переключатели должны быть отмечены автоматически (если какая-либо из кнопок уже проверена) автоматически, а другой текст редактирования также должен быть очищен. И если я отмечу любой из двух переключателей, все поля редактирования текста должны быть очищены (если в них есть какие-либо введенные данные). Вот что я сделал до сих пор.

Внутри oncreate():

    et1 = (EditText)findViewById(R.id.editText1);
    et1.setOnFocusChangeListener(this);
    et1.addTextChangedListener(this);

    et2 = (EditText)findViewById(R.id.editText2);
    et2.setOnFocusChangeListener(this);
    et2.addTextChangedListener(this); 

    radioButton1 = (RadioButton)findViewById(R.id.rb1);
    radioButton2 = (RadioButton)findViewById(R.id.rb2);
    RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup);        
    radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener(){
        public void onCheckedChanged(RadioGroup group, int checkedId) {

             et1.setText("");
            et2.setText("");

        }

    });

И ...

 @Override
public void onFocusChange(View v, boolean hasFocus) {

    switch (v.getId()) {
    case R.id.editText1:
        whoHasFocus = 1;

        break;
    case R.id.editText2 :
        whoHasFocus = 2;

        break;

    }

}

И

   @Override
public void afterTextChanged(Editable edt) {

    if(whoHasFocus == 1){
        String enteredName1 = edt.toString().trim();

        if(enteredName1.length() == 1){
            if(et2.getText().toString().trim().length() >= 1)
                et2.setText("");

            radioButton1.setChecked(false);
            radioButton2.setChecked(false);

        } 

    }else if(whoHasFocus == 2){

        String enteredName2 = edt.toString().trim();
        if(enteredName2.length() == 1){
            if(et1.getText().toString().trim().length() >= 1)
                et1.setText("");

            radioButton1.setChecked(false);
            radioButton2.setChecked(false);
        } 
    }
}

Когда я проверяю любую радиокнопку и начинаю вводить текст редактирования, радиокнопка снимается, но ничего не входит в текст редактирования в первый раз. Если я ввожу следующую букву, она вводит вторую букву и работает нормально. Но первая буква не вводится в endittext при проверке радиокнопки. пожалуйста, помогите мне. Где я ошибаюсь?


person user1670443    schedule 12.02.2013    source источник
comment
это потому, что вы вызываете setChecked (false), поэтому вызывается onCheckedChanged, поэтому ваш текст редактирования очищается.   -  person njzk2    schedule 12.02.2013
comment
Спасибо .. Как я могу это решить?   -  person user1670443    schedule 12.02.2013
comment
быстрый и грязный: после setChecked(false) выполните et‹N›.setText(enteredName‹N›); (‹N› равно 1 или 2)   -  person njzk2    schedule 12.02.2013


Ответы (1)


Решено

            radioGroup.setOnCheckedChangeListener(null);
            radioButton1.setChecked(false);
            radioButton2.setChecked(false);
            radioGroup.setOnCheckedChangeListener(this);

И

    et1.removeTextChangedListener(MyActivity.this);
    et2.removeTextChangedListener(MyActivity.this);
    et1.setText(""); 
    et2.setText("");
    et1.addTextChangedListener(MyActivity.this);
    et2.addTextChangedListener(MyActivity.this);
person user1670443    schedule 12.02.2013