2017-09-27 81 views
1

当用户从收音机组中选择男性,女性或未分类时,我想将字符串变量值设置为1,2,3。设置一个变量值,选择收音机组中的单选按钮

现在我做这种方式,但即使我选择一个单选按钮,将其设置变量值null

代码:

RadioGroup genderGroup; 
RadioButton male, female, unclassified; 
String strGender; 
genderGroup = findViewById(R.id.genderGroup); 
male = findViewById(R.id.genderMale); 
female = findViewById(R.id.genderFemale); 
unclassified = findViewById(R.id.genderUnclassified); 

if (genderGroup.getCheckedRadioButtonId() == -1) { 
     strGender = null;   //no buttons selected 
    } else { 
     if (male.isChecked()) {  // one of the radio buttons is checked 
      strGender = "1"; 
     } else if (female.isChecked()) { 
      strGender = "2"; 
     } else if (unclassified.isChecked()) { 
      strGender = "3"; 
     } 
    } 

当我选择任何单选按钮后打印的价值它显示为空。 如果你知道如何做到这一点,请帮助:)谢谢。

已解决感谢Nilesh。 正确的代码是:

genderGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(RadioGroup group, int checkedId) { 

     if (checkedId == R.id.genderMale) { 
      strGender = "1"; 

     } else if (checkedId == R.id.genderFemale) { 
      strGender = "2"; 
     } 

    } 
}); 

回答

1

你需要使用RadioGroup.OnCheckedChangeListener

接口定义为回调时,检查单选按钮该组中的改变被调用。

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(RadioGroup group, int checkedId) { 
     if (checkedId == R.id.genderMale) { 
      strGender = "1"; 
     } else if (checkedId == R.id.genderFemale) { 
      strGender = "2"; 
     } 
    } 
}); 
+0

真棒!现在工作..谢谢@Nilesh – KhanStan99

+0

谢谢@ KhanStan99高兴地帮助你 –

1
genderGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(RadioGroup group, int checkedId) { 
     // find which radio button is selected 
     if(checkedId == R.id.genderMale) { 
      strGender = "1"; 
     } else if(checkedId == R.id.genderFemale) { 
      strGender = "2"; 
     } else { 
      strGender = "3"; 
     } 
    } 
}); 
1

你应该处理这个如下图所示:

// Is the button now checked? 
boolean checked = ((RadioButton) view).isChecked(); 

// Check which radio button was clicked 
switch(view.getId()) { 
    case R.id.genderMale: 
     if (checked) 
      strGender = 1; 
     break; 
    case R.id.genderFemale: 
     if (checked) 
      strGender = 2; 
     break; 
    case R.id.genderUnclassified: 
     if (checked) 
      strGender = 3; 
     break; 
} 
0
public class MainActivity extends Activity { 
    RadioGroup genderGroup; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     RadioGroup genderGroup = (RadioGroup) findViewById(R.id.radioGroup1); 

     genderGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() 
     { 
      public void onCheckedChanged(RadioGroup group, int checkedId) { 
       switch(checkedId){ 
        case R.id.radio0: 
         // do operations specific to this selection 
          strGender = "1"; 
         break; 
        case R.id.radio1: 
         // do operations specific to this selection 
          strGender = "2"; 
         break; 
        case R.id.radio2: 
         // do operations specific to this selection 
           strGender = "3"; 
         break; 
       } 
      } 
     }); 
    } 
} 
1

试试这个

String strGender =" "; 

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(RadioGroup group, int checkedId) { 
     switch(checkedId){ 
      case R.id.genderMale: 
       strGender = "1"; 
       break; 
      case R.id.genderFemale: 
       strGender = "2"; 
       break; 
      case R.id.genderUnclassified: 
       strGender = "3"; 
       break; 
     } 
    } 
}); 
相关问题