2017-06-16 5 views
1

Ich spiele mit meiner ersten Android-App herum - es ist ein einfacher Rechner, der die Gesamtkosten eines Artikels basierend auf dem endgültigen Verkaufspreis und anderen zusätzlichen Gebühren ermittelt. Eine dieser Gebühren ist die Steuer, die nicht immer für alle Artikel gilt, daher habe ich ein Kontrollkästchen hinzugefügt, um anzugeben, ob die Mehrwertsteuer bei der Berechnung der Kosten angewendet wird oder nicht.Kontrollkästchen aktiviert, wenn geklickt wird

Ich habe eine Methode im Java erstellt, um den aktivierten Zustand des Kontrollkästchens umzuschalten und an das OnClick-Ereignis des Kontrollkästchens zu binden. Es passiert jedoch nichts, wenn ich das Kontrollkästchen drücke.

Hier ist der Java-Code:

public void changeCheckedState(View view) { 
    CheckBox checkBox = (CheckBox)findViewById(R.id.cbIncludeVAT); 

    checkBox.setChecked(!checkBox.isSelected()); 
} 

Hier ist der XML-Code für das Kontrollkästchen Ansicht:

<CheckBox 
    android:id="@+id/cbIncludeVAT" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="8dp" 
    android:layout_marginTop="26dp" 
    android:checked="true" 
    android:onClick="changeCheckedState" 
    android:text="Include VAT?" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintTop_toBottomOf="@+id/lblCardFee" /> 

Ich renne/Testen der App auf meinem Android-Handy und haben es nicht gelungen, das Debuggen zu erhalten zu arbeiten, also habe ich keine Ahnung, ob der Event-Handler sogar feuert, wenn ich die Checkbox drücke.

Ich habe SO nach einer Lösung gesucht und verschiedene Fixes versucht, aber nichts scheint zu funktionieren - das Kontrollkästchen bleibt einfach aktiviert (es ist Standard/Ausgangszustand).

Antwort

1

Die Checkbox bleibt einfach markiert (Standard/Ausgangszustand).

Wenn Ihr Klick auf checkboxcheckBox.isSelected() gibt Ihnen true und ! wird Flip es false daher checkbox wird immer auf false bedeuten ungeprüft eingestellt werden.

     checkBox.isSelected() // true when your click 
checkBox.setChecked(!checkBox.isSelected()); // ! will convert it to false 
// so checkbox will always be set to unchecked by this code 

Hinweis: Sie müssen nicht den checkbox Zustand setzen

public void changeCheckedState(View view) { 
    CheckBox checkBox = (CheckBox)findViewById(R.id.cbIncludeVAT); 
    // ^^^^ declare it outside 
    // initialize checkBox inside oncreate rather than doing on every click 

    if(checkBox.isSelected()){ 
     // box is checked 
    }else{ 
     // box is unchecked 
    } 
} 
Verwandte Themen