KhanStan99
KhanStan99

Reputation: 424

Set a variable value on select a radio button from radio group

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

Answers (5)

Sunil P
Sunil P

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

Shubham Jain
Shubham Jain

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

AskNilesh
AskNilesh

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

Ankita
Ankita

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

user8583580
user8583580

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

Related Questions