问题
Is there any possible way to get the selected radio button
in this layout? because rg.getCheckedRadioButtonId()
not working on this layout. I can't get each of my radiobuttons ID
. It's like all my radio button
are out of my radio Group
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/rg"
android:gravity="center"
android:layout_centerVertical="true"
android:layout_alignParentStart="true">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/rad1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"/>
<RadioButton
android:id="@+id/rad2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/rad3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"/>
<RadioButton
android:id="@+id/rad4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"/>
</LinearLayout>
</RadioGroup>
so what i did is like this, but I can only get the ID of one radiobutton
. How can I get all ID of my radiobutton
and get what is selected?.
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int radioButtonId = rg.getCheckedRadioButtonId();
if(rg.getCheckedRadioButtonId()!= -1){
RadioButton selectedans = (RadioButton) findViewById(radioButtonId);
String selectedansText = selectedans.getText().toString();
if (selectedansText == answer[position]) {
//SelectedansText match with answer
}
if(selectedansText != answer[position]) {
//selectedansText not match with answer
}
rg.clearCheck();
if (position < question.length) {
tv.setText(question[position]);
r1.setText(opts[position * 4]);
r2.setText(opts[position * 4 + 1]);
r3.setText(opts[position * 4 + 2]);
r4.setText(opts[position * 4 + 3]);
} else {
Intent intent = new Intent(grade_four_post_test.this, grade_four_post_results.class);
startActivity(intent);
}
}
else
{
Toast.makeText(grade_four_post_test.this, "Choose Answer",
Toast.LENGTH_SHORT).show();
}
}
}
);
回答1:
Check this answer i have done in my studio, hope this helps,
public class StackOne extends AppCompatActivity {
private RadioButton rb1, rb2, rb3, rb4;
private RadioGroup rg;
private String selectedType = "";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.stack_one);
rb1 = (RadioButton) findViewById(R.id.rad1);
rb2 = (RadioButton) findViewById(R.id.rad2);
rb3 = (RadioButton) findViewById(R.id.rad3);
rb4 = (RadioButton) findViewById(R.id.rad4);
rg = (RadioGroup) findViewById(R.id.rg);
GetSelectedRadioButton();
}
private void GetSelectedRadioButton() {
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (group.getCheckedRadioButtonId()) {
case R.id.rad1:
selectedType = "rButton1";
rb1.setChecked(true);
Toast.makeText(StackOne.this,"Radiobutton 1 checked",Toast.LENGTH_LONG).show();
break;
case R.id.rad2:
selectedType = "rButton2";
rb2.setChecked(true);
Toast.makeText(StackOne.this,"Radiobutton 2 checked",Toast.LENGTH_LONG).show();
break;
case R.id.rad3:
selectedType = "rButton2";
rb3.setChecked(true);
Toast.makeText(StackOne.this,"Radiobutton 3 checked",Toast.LENGTH_LONG).show();
break;
case R.id.rad4:
selectedType = "rButton2";
rb4.setChecked(true);
Toast.makeText(StackOne.this,"Radiobutton 4 checked",Toast.LENGTH_LONG).show();
break;
}
}
});
}
}
Checkout this for more detail.
回答2:
You can get selected radio button by this way
int selectedId = radioGroup.getCheckedRadioButtonId();
// find the radiobutton by returned id
radioButton = (RadioButton) findViewById(selectedId);
this will return you the id of selected radio button
来源:https://stackoverflow.com/questions/35085265/android-check-radiobutton-id-in-a-radiogroup-with-linearlayout