2017-06-16 81 views
1

我在玩我的第一個Android應用程序 - 這是一個簡單的計算器,根據最終銷售價格和任何其他附加費用計算出物品的總成本。其中一項收費是稅收,並非總是適用於所有項目,因此我添加了一個複選框來指定計算成本時是否適用增值稅。點擊時切換複選框的狀態

我在java中創建了一個方法來切換複選框的選中狀態並將其綁定到複選框的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()點擊給你true!將它翻轉到false因此checkbox總是被設置爲false意味着聽之任之。

     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 
    } 
} 
相關問題