2016-05-19 9 views
7

Stworzyłem przycisk radiowy w grupie radiologicznej, ale kiedy próbuję uruchamiać aplikacje, cały przycisk radiowy może być wybierany cały czas i jak ustawić tylko jeden przycisk radiowy można wybrać jednocześnie?Jak ustawić tylko jedno RadioButton Może być wybrane w tym czasie w RadioGroup

Używam Fragment

RadioGroup radioGroup = (RadioGroup) rootView.findViewById(R.id.RGroup); 
     radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) { 
       // find which radio button is selected 
       if(checkedId == R.id.Abdominal) { 
        Toast.makeText(getActivity().getApplicationContext(), "choice: A", 
          Toast.LENGTH_SHORT).show(); 
       } else if(checkedId == R.id.Arm) { 
        Toast.makeText(getActivity().getApplicationContext(), "choice: B", 
          Toast.LENGTH_SHORT).show(); 
       } else if(checkedId == R.id.Back){ 
        Toast.makeText(getActivity().getApplicationContext(), "choice: C", 
          Toast.LENGTH_SHORT).show(); 
       } else if(checkedId == R.id.Chest){ 
        Toast.makeText(getActivity().getApplicationContext(), "choice: D", 
          Toast.LENGTH_SHORT).show(); 
       } else if(checkedId == R.id.Leg){ 
        Toast.makeText(getActivity().getApplicationContext(), "choice: E", 
          Toast.LENGTH_SHORT).show(); 
       } else if(checkedId == R.id.Shoulder){ 
        Toast.makeText(getActivity().getApplicationContext(), "choice: F", 
          Toast.LENGTH_SHORT).show(); 
       } 
      } 

     }); 

tutaj mojego kodu xml do RG i Rb

<RadioGroup 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:id="@+id/RGroup"> 

        <TableRow android:weightSum="1"> 
        <RadioButton 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="Abdominal" 
         android:id="@+id/Abdominal"/> 
        <RadioButton 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="Arm" 
         android:id="@+id/Arm"/> 
        <RadioButton 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="Back" 
         android:id="@+id/Back" /> 
         </TableRow> 
        <TableRow> 
         <RadioButton 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:text="Chest" 
          android:id="@+id/Chest"/> 
         <RadioButton 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:text="Leg" 
          android:id="@+id/Leg"/> 
         <RadioButton 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:text="Shoulder" 
          android:id="@+id/Shoulder"/> 
        </TableRow> 
       </RadioGroup> 

edytowany 1: Odpowiedź: Jeśli nie chcesz może być wybrany przycisk radiowy w jednym czasie, więc nie używaj Tablerow

Odpowiedz

11

To nie działa z powodu TableRow wewnątrz radiogroup. Wszystkie RadioButtons nie są zgrupowane ze względu na TableRow między nimi.

RadioButton powinno być bezpośrednim potomkiem RadioGroup, W przeciwnym razie grupowanie nie działa.

Wystarczy zmienić kod tak to będzie działać:

 <RadioGroup 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/RGroup"> 

      <RadioButton 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Abdominal" 
       android:id="@+id/Abdominal"/> 
      <RadioButton 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Arm" 
       android:id="@+id/Arm"/> 
      <RadioButton 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Back" 
       android:id="@+id/Back" />           

      <RadioButton 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Chest" 
       android:id="@+id/Chest"/> 
      <RadioButton 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Leg" 
       android:id="@+id/Leg"/> 
      <RadioButton 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Shoulder" 
       android:id="@+id/Shoulder"/> 

     </RadioGroup> 

nadzieję, że to pomaga. :)

+0

Wow Dzięki! to odpowiedź, wszystkie przyciski mogą być wybrane raz bc z tablerow :) Dzięki za pomoc –

+0

Btw, przy użyciu TableRow do tworzenia radiobutton w 2 rzędach, więc jak zrobić 2rwos bez tablerow? –

+0

daj mi zobaczyć .. zaktualizuję to wkrótce .. !! –

5
<RadioGroup 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:id="@+id/radioGroup"> 
     <RadioButton 
      android:layout_width="0dp" 
      android:layout_weight="50" 
      android:layout_height="wrap_content" 
      android:text="Debit" 
      android:id="@+id/rDebit" 
      android:checked="false" 
      /> 

     <RadioButton 
      android:layout_width="0dp" 
      android:layout_weight="50" 
      android:layout_height="wrap_content" 
      android:text="Credit" 
      android:id="@+id/rCredit" 
      android:checked="false" /> 

    </RadioGroup> 

A w pliku java

RadioGroup radioGroup; 



radioGroup = (RadioGroup) findViewById(R.id.radioGroup); 

i kiedy zrobić coś

if (radioGroup.getCheckedRadioButtonId() == R.id.rCredit) 
{ 
// do something 
} 
+0

następstwie kodu, ale wszystkie radiobutton nadal można wybrać w jednym czasie, im przy fragment btw, –

2

Prosty sposób. kliknij przycisk radiowy. wykonaj kod jak poniżej.

public void clearRadioChecked() { 
    rdopa.setChecked(false); 
    rdopb.setChecked(false); 
    rdopc.setChecked(false); 
    rdopd.setChecked(false); 
} 

jeśli chcesz wybrać rdopa, kliknij przycisk rdopa wykonaj poniższe czynności.

clearRadioChecked() 
rdopa.setChecked(true); 
+0

Lepiej korzystamy z ** CheckBox ** wtedy .. Nie używasz RadioButton do ręcznego zaznaczania i odznaczania. Domyślnym zachowaniem jest ** można sprawdzić od razu, inne zostaną automatycznie odznaczone **. –

+0

@ janki gadhiya, jeśli masz grupę radiobutton i możesz ponownie używać przez wiele czasu, to musisz wdrożyć powyżej. W przeciwnym razie masz jedną grupę przycisków radiowych, to działa dobrze, jak na swoją koncepcję automatycznie zaznacz/odznacz. – Vasant

Powiązane problemy