根据references,ToggleButtons和Switches应该与OnCheckedChangeListener一起使用,或者与onToggleClicked(View视图)一样使用。
但是,两种方式都返回void,内部if语句(if (on)
或if (checked)
或if (isChecked)
不允许我设置可用变量。这同样适用于单选按钮。
我有一个应用程序,我想计算重症监护病人的每日能量需求。我需要使用多个开关;并且所有这些选择器共同影响计算。示例公式为:
1784 +(5 *体重) - (11 *年龄)+(如果是男性则为244)+(如果是创伤患者则为239)+(如果是烧伤患者则为804)
以下是包含单个开关的示例。我没有为所有开关/参数提供我的解决方案,因为这太多代码混乱了:
public double calculateBMI(View view) {
EditText getHeight = (EditText)findViewById(R.id.height); // find the widget
String height_as_string = getHeight.getText().toString(); // get the string
int height = Integer.parseInt(height_as_string); // convert to integer
Switch gender = (Switch)findViewById(R.id.gender); // find the switch
double heightConvertedToInch = height / 2.54; // convert height to inch
// calculate ideal body weight
if(gender.isChecked()){ // gender is male
double idealBodyWeight = 106 + ( 6 * heightConvertedToInch );
return idealBodyWeight;
} else { // gender is female
double idealBodyWeight = 100 + ( 5 * heightConvertedToInch );
return idealBodyWeight;
}
}
答案 0 :(得分:1)
根据引用,ToggleButtons和Switches应该与OnCheckedChangeListener一起使用,或者与onToggleClicked(View视图)一样使用。
这些是事件侦听器,如果您需要根据复合按钮状态的更改立即采取措施,例如启用/禁用其他窗口小部件。否则就不需要它们了。
处理这种情况的正确方法是什么?
在isChecked()
CompoundButton
或ToggleButton
或Switch
或其他)上致电CheckBox
,并使用该信息“影响计算”。