Android 基于 radioGroup 选择的 EditText 可见性

Android EditText Visibility based on radioGroup selection

如果选择 radioButton1,我需要隐藏 editText1 并显示 editText2,并且 如果选择 radioButton2,我需要隐藏 editText2 并显示 editText1。 两个按钮都在一个 radioGroup 中。 我不确定是否有 radioGroup onChange 事件 returns 选中了哪个 radioButton? 如果是这样,那我可以做

EditText et1 = (EditText) findViewById(R.id.editText1);
et1.setVisibility(View.INVISIBLE);

您需要在 radioGroup 上添加 OnCheckedChangeListener:

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {         
        // checkedId is the RadioButton selected
        if (checkedId == R.id.radioButton1) {
            editText1.setVisibility(View.INVISIBLE);
            editText2.setVisibility(View.VISIBLE);
        } else if (checkedId == R.id.radioButton1) {
            editText1.setVisibility(View.VISIBLE);
            editText2.setVisibility(View.INVISIBLE);
        }
    }
});

您可以将 OnCheckedChangeListener() 设置为您的 radioGroup:

      final EditText et1 = (EditText) findViewById(R.id.editText1);
      final EditText et2 = (EditText) findViewById(R.id.editText2);

      RadioGroup radioGroup = (RadioGroup) findViewById(R.id.yourRadioGroup);        
      radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {
                    if(checkedId == R.id.radioBtn1){
                       et1.setVisibility(View.VISIBLE);
                       et2.setVisibility(View.INVISIBLE);  
                    } else {
                       et1.setVisibility(View.INVISIBLE);
                       et2.setVisibility(View.VISIBLE);  
                    }
                }
       });

您可以实现 Rami 和 sv3k 所回答的功能。

还有一个选项,你可以尝试实现你想要的。 那是在每个单选按钮上设置 onClickListener。

像这样。

   RadioGroup  radioGroup=(RadioGroup)findViewById(R.id.radioGroup);
        RadioButton radio1= (RadioButton)radioGroup.findViewById(R.id.radio1);
        RadioButton radio2= (RadioButton)radioGroup.findViewById(R.id.radio2);
        radio1.setOnClickListener(new View.OnClickListener() 
         {
             @Override
             public void onClick(View v) {
                 // TODO Auto-generated method stub
                 et1.setVisibility(View.INVISIBLE);
                 et2.setVisibility(View.VISIBLE);
             }
         });

        radio2.setOnClickListener(new View.OnClickListener() 
        {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                et2.setVisibility(View.INVISIBLE);
                et1.setVisibility(View.VISIBLE);
            }
        });