0

我有两个 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);
        } 
    }
}

当我检查任何单选按钮并开始输入edittext时,单选按钮未选中,但第一次没有任何内容进入edittext。如果我输入下一个字母,那么它正在输入第二个字母,然后工作正常。但是,当检查半径时,未进入endittext。请帮我。我哪里出错了?

4

1 回答 1

2

解决了

            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);
于 2013-02-12T10:33:04.293 回答