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
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
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;
}
}
}
});
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.
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.
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);
}