Radiogroup checked id getting wrong value -1 - android

I want to access the RadioButton from the RadioGroup,
int selectedId = radioFeeGroup.getCheckedRadioButtonId();
radioFeeButton = (RadioButton) findViewById(selectedId);
I am getting selectedId value -1. That's why application get crashed.

Make Sure you are selecting at least one Radio button from the group.
See the Document
Your code is correct,
int selectedId = radioFeeGroup.getCheckedRadioButtonId();
radioFeeButton = (RadioButton) findViewById(selectedId);
If you are already selecting the RadioButton then clean the project & Rebuild it again it should work if you are accessing RadioGroup correctly from xml.

Check this
radioFeeGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
#Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
int radioButtonID = radioFeeGroup.getCheckedRadioButtonId();
View radioButton = radioFeeGroup.findViewById(radioButtonID);
int position = group.indexOfChild(radioButton);
}
});
Check this examples
How to get the id of selected radio button in android?
How to get id of selected radio button in a radio group

Related

Multiple RadioGroup onCheckedChanged

This is my first time doing radio groups. Im trying to save the values from 3 groups to Shared Prefs. It works fine with one group, but once I try to add 2 more, all the pref values are just the last group in the form. Im not sure what to do to use multiple RadioGroups. Any help would be appreciated.
onCreate
RadioGroup radioGroupGender = (RadioGroup) findViewById(R.id.gender_radio);
radioGroupGender.setOnCheckedChangeListener(this);
RadioGroup radioGroupActivity = (RadioGroup) findViewById(R.id.activity_level);
radioGroupActivity.setOnCheckedChangeListener(this);
RadioGroup radioGroupStatus = (RadioGroup) findViewById(R.id.current_status);
radioGroupStatus.setOnCheckedChangeListener(this);
And my onCheckedChanged
public void onCheckedChanged(RadioGroup radioGroup, int i) {
int genderId = radioGroup.getCheckedRadioButtonId();
RadioButton genderBut = (RadioButton)radioGroup.findViewById(genderId);
gender_radio = genderBut.getText().toString();
int activityLvl = radioGroup.getCheckedRadioButtonId();
RadioButton activityLvlBut = (RadioButton)radioGroup.findViewById(activityLvl);
activity_level = activityLvlBut.getText().toString();
int currentStat = radioGroup.getCheckedRadioButtonId();
RadioButton CurrentBut = (RadioButton)radioGroup.findViewById(currentStat);
current_status = CurrentBut.getText().toString();
}
You are using the same gender_radio activity_level current_status , they get overwriten on every onCheckedChanged() call, only the values of the last call of onCheckedChanged() will be saved

Android -get radio button id based on value

I want to highlight right and wrong option when user clicks a button after checking an radio button. If that option is right, highlight. Else highlight right option.
Is there any way to get radio button id in a group based on its value? Or Do I need to use switch case?
I searched enough but not able to find out what I need.
Edit
I have simple layout which contains one question, 4 choices, one button. User check a radio button and click the check button. If user selects wrong option, highlight the correct option. I know what is correct option by value.
choice1, choice2, choice3, choice4 are four radio buttons. User checks choice3. But choice2 is correct. How do I select choice2 by value in this radio group.
group.getRadioButtonId("choice2")
Anything similar to this?
You could iterate through the children of your RadioGroup to get the required one:
int count = radioGroup.getChildCount();
for (int i = 0 ; i < count; i++) {
RadioButton button = (RadioButton) radioGroup.getChildAt(i);
if (button.getText().equals("choice2")) {
int id = button.getId(); // the ID you're looking for
}
}
You Can check like this
#Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub
int rbId = group.getCheckedRadioButtonId();
RadioButton rb = (RadioButton) findViewById(rbId);
switch (group.getId()) {
case R.id.radiogroupID:
if (rb.getText().toString().equalsIgnoreCase("right")) {
// your logic
} else {
//your logic
}
}
}
you can use these line. its working for me
int checkedId = radioGroup.getCheckedRadioButtonId();
View radioButton = radioGroup.findViewById(checkedId);
int radioId = radioGroup.indexOfChild(radioButton);
RadioButton btn = (RadioButton) radioGroup.getChildAt(radioId);
First check which option is true. hear choice 2 OK. set by default is checked true and than check user checked value . if user select other option than display message and pass true option we already checked true
Create an int array with all the ids of the radiobutton
int[] rb_IDs=new int[]{R.id.rb1,R.id.rb2,R.id.rb3};
Then inside your button click :
RadioGroup rg=(RadioGroup) findViewById(R.id.rg);
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
#Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
for (int i=0;i<rb_IDs.length;i++)
{
RadioButton rb=(RadioButton)findViewById(rb_IDs[i]);
if (rb.getText().toString().equals("YOUR CORRECT ANSWER")&&!rb.isChecked())
{
//
//Do your thing
//
//ID of the correct answer Radiobutton is
int id=rb_IDs[i];
//HighLighting the answer
rb.setBackgroundColor(Color.parseColor("#00ff00"));
break;
}
}
}
});

Retrieve Value of RadioButton checked

Since several days, I search how to retrieve the checked radio Button ID, and after display the RadioButton checked in a Toast. But I get NULLPOINTER EXECEPTION for the int ID_LANGUE. I use this code :
enter code here
int ID_LANGUE = radioGroup_LANGUE.getCheckedRadioButtonId();
RadioButton rb_L = (RadioButton)findViewById(ID_LANGUE);
if (rb_L.equals("Anglais")){
Toast.makeText(MainActivity.this,"Anglais",Toast.LENGTH_LONG).show();
}
You have to get the radio group first by
RadioGroup rg = (RadioGroup) findViewById(R.id.RadioGroup_LANGUE);
Then you can use setOnCheckedChangeListener to determine which radio button was clicked actually.
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch(checkedId){
case R.id.radio0:
//you selected radio0
break;
case R.id.radio1:
//you selected radio1
break;
}
}
});
Other way is using getCheckedRadioButtonId also int id = radioGroup.getCheckedRadioButtonId(); you get hold of selected radio id.

How to get radio Button values number

I am making an application that has list and Radio Buttons. My Layout contains of the following : a list , A button .
The List contains of Radio buttons. Two radio Buttons. After checking the buttons. I want to make a loop that reads the values of how many are in Button one and how many in Button Two.
This is how I have done so far.
ListViewStudentEditAbsence country ;
for(int i=0;i<listViewStudentNames.size();i++) {
country = listViewStudentNames.get(i);
if (country.getAbsence()==1) {
Absence[i] = "1";
} else {
Absence[i] ="0";
}
}
But It doesn't seem to work.
In your CustomAdapter getView() method
int value=0; //globally
RadioGroup radioGroup = (RadioGroup) convertView.findViewById(R.id.yourRadioGroup);
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
#Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// checkedId is the RadioButton selected
if (checkedId == R.id.rbutton1) {
value=10; //a's value
} else if (checkedId == R.id.rbutton2) {
value=20; //b's value
}
}
});
https://stackoverflow.com/questions/11194515/android-get-value-of-the-selected-radio-button
Android getting value from selected radiobutton
Hope it works. This two links give you proper knowledge about fetching value.

How to make the radio button checked in android while updating the form?

I have an application form with one radio group that consists of two radio buttons (self delivery and company delivery). While inserting the details everything is working fine and I can get the text of radio button selected by the code below:
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
#Override
public void onCheckedChanged(RadioGroup arg0, int arg1) {
// TODO Auto-generated method stub
selectedId = radioGroup.getCheckedRadioButtonId();
// find the radiobutton by returned id
radioButton = (RadioButton) findViewById(selectedId);
if (radioButton.isChecked()) {
OPTIONS=radioButton.getText().toString();
if (OPTIONS.equals("SelfDelivery")) {
deliveryAddress.setVisibility(View.GONE);
deliveryEdit.setVisibility(View.GONE);
} else {
deliveryAddress.setVisibility(View.VISIBLE);
deliveryEdit.setVisibility(View.VISIBLE);
}
}
}
});
When I press the edit button and go to edit page, I want the radio button to also be selected according to the user.
For example: If the user is selecting the company delivery (in the edit page the company delivery should be selected in the radio group).
I do not know how to get the selected id and make the radio group to be selected in the edit page.
// try this
// on edit try this way
RadioButton radioButtonSelf;
RadioButton radioButtonCompany;
radioButtonSelf = (RadioButton) findViewById(R.id.selfradiobuttonid);
radioButtonCompany = (RadioButton) findViewById(R.id.radioButtonCompany);
if(OPTIONS.equals("SelfDelivery")){
radioButtonSelf.setChecked(true);
radioButtonCompany.setChecked(false);
}else{
radioButtonCompany.setChecked(true);
radioButtonSelf.setChecked(false);
}

Categories

Resources