2017-05-02 11 views
1

Ich habe zwei RadioButtons in RadioGroup, zunächst beide deaktiviert sind. Ich möchte Radiobutton deaktivieren, wenn es bereits aktiviert ist. Ich habe versucht, aber ich kann es nicht tun. wenn ich irgendeinen Radioknopf wähle, dann ändert er nicht den Zustand zum ersten Mal, wenn ich das selbe Radioknopf zum zweiten Mal wähle, dann ändert er seinen Zustand, und wenn ich einen anderen Radioknopf wähle, wenn ein Knopf überprüft wird, dann ändert es sich auch nicht das erste mal und alle schaltflächen werden deaktiviert, kann mir jemand helfen? Mein Code ist unten angegeben ...Wie kann ich RadioButton deaktivieren, wenn bereits in Radiogroup

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
@Override 
public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) { 
RadioButton checkedRadioButton = (RadioButton)group.findViewById(checkedId); 
pus=""; 

boolean isChecked = checkedRadioButton.isChecked(); 
if(isChecked){ 
    checkedRadioButton.setChecked(false); 

}else{ 
    checkedRadioButton.setChecked(true); 

} 
} 
Toast.makeText(context, pus, Toast.LENGTH_SHORT).show(); 
} 
}); 








<RadioGroup 
    android:id="@+id/rdbt_group" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="5dp" 

    android:gravity="center" 
    android:orientation="horizontal" > 

    <RadioButton 
    android:id="@+id/radio_no" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:background="@drawable/rbtn_selector" 
    android:button="@null" 
    android:gravity="center" 
    android:paddingBottom="5dp" 
    android:paddingLeft="10dp" 
    android:paddingRight="10dp" 
    android:paddingTop="5dp" 
    android:clickable="true" 
    android:textColor="@drawable/rbtn_textcolor_selector" 
    android:textSize="15sp" /> 

    <RadioButton 
    android:id="@+id/radio_yes" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:button="@null" 
    android:clickable="true" 
    android:textSize="15sp" 
    android:background="@drawable/rbtn_selector" 
    android:textColor="@drawable/rbtn_textcolor_selector" 
    android:padding="5dp" 
    android:gravity="center" 
    /> 


    </RadioGroup> 
+0

Wenn ich nicht falsch bin Sie wollen, dass wenn Benutzer klickt wieder auf RadioButton, sollte es die Auswahl löschen, richtig? –

+0

ja Sie haben Recht ... –

+1

Mögliches Duplikat von [Uncheck Radio Button, wenn bereits aktiviert?] (Http://stackoverflow.com/questions/21132111/uncheck-radio-button-if-already-checked) – NarendraJi

Antwort

1

RadioGroup ist Mittel für die Auswahl einer von zwei Optionen, Sie sollten das normale Verhalten von Ansichten nicht stören. Benutzer zwangsweise Wahlmöglichkeit von zwei. Betrachten Sie Geschlecht als Radiogruppe, es kann zwei oder drei Möglichkeiten geben, Sie müssen eine von ihnen obligatorisch wählen. Dies kann durch einfaches Hinzufügen von Code unten in xml

<RadioGroup 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:layout_constraintTop_toTopOf="parent" 
    android:layout_marginLeft="16dp" 
    android:layout_marginTop="16dp" 
    app:layout_constraintLeft_toLeftOf="parent"> 

    <RadioButton 
     android:id="@+id/radioButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="RadioButton" 
     tools:layout_editor_absoluteX="126dp" 
     tools:layout_editor_absoluteY="83dp"/> 

    <RadioButton 
     android:id="@+id/radioButton2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="RadioButton" 
     tools:layout_editor_absoluteX="172dp" 
     tools:layout_editor_absoluteY="127dp"/> 
    </RadioGroup> 

und in Aktivitätsklasse erreichen werden

radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() 
    { 
     @Override 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      // checkedId is the RadioButton selected 
      // you can check if radiobutton is checked or unchecked here , do needful codes 
     } 
    }); 
0

Ich hatte gerade ein Radio-Button, und ich möchte wirklich nicht, um eine Optionsfeldgruppe machen. Die onClick- und if-and-else-Prüfung funktionierte nicht, um sie manuell zu überprüfen und zu deaktivieren. Ich lese ein paar Beiträge mit onRadioButtonClick Listeners usw.

Zuerst habe ich versucht, zu checkbox-> dasselbe Problem zu tauschen. Dann habe ich die CheckedTextView ausprobiert und was weißt du, es funktionierte tatsächlich wie ein Toggle. Also im Grunde habe ich ein Radio-Button links dann den Text leer, fügte der checkedTextView daneben (überlappend), dann die onClick Funktion des checkedTextView auf eine Toggle-Funktion verknüpft ->

public void toggle(View view) 
{ 
    if(checkedTextView.isChecked()) 
    { 
     checkedTextView.setChecked(false); 
     actualRadioBtn.setChecked(false); 
    } 
    else 
    { 
     checkedTextView.setChecked(true); 
     actualRadioBtn.setChecked(true); 
    } 
} 

Dann in Ihrer Funktion, wo Sie überprüfen Wenn dieses Optionsfeld ausgewählt ist, können Sie einfach

verwenden
Verwandte Themen