我正在玩我的第一个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手机上运行/测试应用程序并且无法进行调试工作,所以当我按下复选框时,我不知道事件处理程序是否正在触发。
我搜索了SO以寻求解决方案并尝试各种修复,但似乎没有任何工作 - 复选框只是保持选中状态(默认/启动状态)。
答案 0 :(得分:1)
他复选框只是保持选中状态(默认/开始状态)。
点击checkbox
checkBox.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
}
}
状态
response = {
json:(obj) => { response.body = obj },
status:function(status) {
response.statusValue = status;
return this;
}