我有一个简单的问题,我似乎无法弄明白。我希望有人可以提供帮助,但在研究复选框之后,我仍然无法解决这个问题。
这是我的代码:
CheckBox chkbxUpgrade;
TextView txtViewResult;
Double cost;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtViewResult = (TextView)findViewById(R.id.textViewResult);
chkbxUpgrade = (CheckBox)findViewById(R.id.checkBoxUpgrade);
onCheckboxClicked(cost);
}
public double onCheckboxClicked(Double cost) {
if (chkbxUpgrade.isChecked()) {
cost = 6.99;
}
else {
cost = 4.99;
}
return cost;
}
public void onClickOrder(View view) {
Toast.makeText(this, "Order Successful!", Toast.LENGTH_LONG).show();
txtViewResult.setText("Price: $" + cost);
}
如果没有勾选复选框,我的文本视图是否不会填充4.99;如果选中复选框,则不会填写6.99?我无法弄清楚为什么它没有填充...
答案 0 :(得分:1)
要查看JCheckBox是否经过勾选标记,您将使用 .isSelected()而不是 .isChecked()。使用JCheckBox没有 .isChecked():
if (chkbxUpgrade.isSelected()) {
cost = 6.99;
}
else {
cost = 4.99;
}
除非使用其他类的方法。 此外,由于 cost 变量已声明为类字段,因此不需要将其作为参数传递或从方法返回,因为变量是类全局变量。您的 onCheckboxClicked()方法也适用于:
public void onCheckboxClicked() {
if (chkbxUpgrade.isSelected()) {
cost = 6.99;
}
else {
cost = 4.99;
}
}
除非使用其他类中的 onCheckboxClicked()方法。
答案 1 :(得分:1)
xml看起来像:
<CheckBox android:id="@+id/your check box id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="text"
android:onClick="onCheckboxClicked"/>
然后将您的方法更改为:
public void onCheckboxClicked(View view) {
// Is the view now checked?
boolean checked = ((CheckBox) view).isChecked();
if (checked)
{
cost = 6.99;
}
else
{
cost =4.99;
}
}