Reputation: 424
I want to set a String variable value to 1,2,3 when user selected male, female or unclassified respectively from the radio group.
Right now I am doing it this way but even if I select a radio button it set the variable value as null
Code:
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";
}
}
When I print the value after selecting any radio button it shows null. If you know how to do this please help :) thanks.
Solved Thanks to Nilesh. Correct code is:
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";
}
}
});
Upvotes: 1
Views: 4105
Reputation: 3838
Try this
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;
}
}
});
Upvotes: 1
Reputation: 2383
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";
}
}
});
Upvotes: 1
Reputation: 69671
you need to use RadioGroup.OnCheckedChangeListener
Interface definition for a callback to be invoked when the checked radio button changed in this group.
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";
}
}
});
Upvotes: 1
Reputation: 1149
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;
}
}
});
}
}
Upvotes: 0
Reputation:
You should handle this as shown below:
// 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;
}
Upvotes: 1