【问题标题】:Android using a boolean flag to define user inputAndroid 使用布尔标志来定义用户输入
【发布时间】:2013-05-08 19:49:38
【问题描述】:

如果此处的语法不正确,我深表歉意,尤其是关于布尔值:

public class WeightConverter extends Activity implements OnClickListener, OnCheckedChangeListener {
    Button convertWeight;
    TextView conversionResults;
    EditText enterWeight;
    RadioGroup weightPicker;
    RadioButton radKG, radLB;
    double weightValue, convertedWeight;
    String weightString;
    String measurement;
    Boolean weightSwitch;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.weightconverter);
        initializeVariables();
        weightSwitch = false;
        radKG.setChecked(true);
    }

    private void initializeVariables() {
        convertWeight = (Button) findViewById(R.id.btnConvertWeight);
        conversionResults =(TextView) findViewById(R.id.tvWeightConversion);
        enterWeight =(EditText) findViewById(R.id.etWeightToConvert);
        weightPicker = (RadioGroup) findViewById(R.id.rgWeightType);
        radKG = (RadioButton) findViewById(R.id.radKG);
        radLB = (RadioButton) findViewById(R.id.radLB);
        convertWeight.setOnClickListener(this);
        weightPicker.setOnCheckedChangeListener(this);


    }

    @Override
    public void onClick(View v) {

        switch (v.getId()) {

        case R.id.btnConvertWeight:

            if (weightSwitch = true){
                convertedWeight = weightValue /2.2;
                measurement = "Kilograms";
            }else{
                convertedWeight = weightValue *2.2;
                measurement = "Pounds";
            }


            conversionResults.setText(weightValue + " = " + String.valueOf(convertedWeight) + " " + measurement);
            break;
        }

    }

    @Override

    public void onCheckedChanged(RadioGroup group, int checkedId) {
        weightValue = Double.parseDouble(enterWeight.getText().toString());
        switch (checkedId) {

        case R.id.radKG:

            weightSwitch = true;

            break;
        case R.id.radLB:

            weightSwitch = false;

            break;

        }
    }



}

根据用户是否选择任一布尔类型,应执行不同的计算,但是只有转换为磅才有效..

【问题讨论】:

    标签: java android boolean user-input


    【解决方案1】:

    您正在尝试将 boolean 值与此行中的 = 运算符进行比较:

    if (weightSwitch = true){
    

    但是=是赋值运算符,所以weightSwitch总是true

    使用== 比较boolean 值,或更好:

    if (weightSwitch)
    

    因为它已经是一个boolean 值。

    【讨论】:

    • 太棒了!!不过,如果我没有专门指定单选按钮,那么计算会返回 0 即。如果我只是输入一个值并按下转换它只返回 0,只有当我按下任一单选按钮时才会发生计算,我觉得它与“radKG.setChecked(true);”有关?
    • 我目前不熟悉Android;我刚刚看到您的错误恰好与纯 Java 有关。
    猜你喜欢
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    • 2018-07-26
    相关资源
    最近更新 更多