2017-06-16 11 views
1

私は最初のAndroidアプリで遊んでいます - それは最終販売価格とその他の追加料金に基づいて商品の総費用を計算する簡単な電卓です。これらの料金の1つはすべての商品に適用されるわけではない税金です。したがって、費用を計算する際にVATが適用されるかどうかを指定するチェックボックスを追加しました。クリックしたときにチェックボックスのチェック状態を切り替えます

私は、チェックボックスのチェック状態をトグルしてチェックボックスのonClickイベントにバインドするメソッドを作成しましたが、チェックボックスを押しても何も起こりません。ここで

は、Javaコードは次のとおりです。

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

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

はここでチェックボックスのビューのためのXMLです:

<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" /> 

私は/実行している私のAndroid携帯電話上でアプリをテストおよびデバッグを取得することができませんでしたよ私がチェックボックスを押すと、イベントハンドラが起動しているかどうかわかりません。

解決策を探していますが、何も問題はありません。チェックボックスはチェックされたままです(デフォルト/開始状態です)。

答えて

1

チェックボックスはチェックされたままです(デフォルト/開始状態です)。 checkboxcheckBox.isSelected()上のあなたのクリックがcheckboxは常にチェックしないわけfalseに設定されますので、falseにそれを反転しますあなたのtrue!を与える

     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 

注:checkbox状態に

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 
    } 
} 
を設定する必要はありません
関連する問題