如果...... Else Statement总是转移到" else"。

时间:2017-07-04 14:53:40

标签: java android xml

我正在尝试进行"状态检查"在一个无线电组中,确定如果在组中选择了2个单选按钮中的一个(if语句),如果选择了2个单选按钮中的另一个(如果是语句),或者如果两者都没有被选中,则确定会发生什么(else语句)。代码如下:

if (rdbAM.isSelected()) {
        strTime = rdbAM.getText().toString();
    } else if(rdbPM.isSelected()){
        strTime = rdbPM.getText().toString();
    } else {
        AlertDialog.Builder WrongDateFormat = new AlertDialog.Builder(this);
        WrongDateFormat.setMessage("Please Select AM or PM");
        WrongDateFormat.setNeutralButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int id) {
                dialog.cancel();
            }
        });
        AlertDialog alertWrongDateFormat = WrongDateFormat.create();
        alertWrongDateFormat.show();
        return;
    }

基本上,这应该做的是,设置名为" strTime"的变量。无论放射线组中所选单选按钮的文本是什么,如果两者都未被选中,则显示错误消息。无论是否选择了radiobutton,它总是显示此错误消息:

enter image description here

(如上所示,选择" AM" radiobutton,但仍显示错误)。

任何关于为什么会这样做的建议都将受到赞赏。请注意,我对Android开发相对较新,所以如果它显然是显而易见的,那么我道歉,但我一直试图让我的头脑这几天了!如果您想查看更多代码,请告诉我,我会很乐意提供它,但我想尽可能保密,所以不想在最初发布所有内容如果没有必要发布。提前致谢。

3 个答案:

答案 0 :(得分:1)

而不是isSelected()使用isChecked()

答案 1 :(得分:1)

根据文档,RadioButton扩展了提供方法CompoundButtonisChecked()。但是,与扩展类isSelected()中的方法View的差异可能很难描述。

执行以下操作并且它应该有效:

If (next - prev) > 4

答案 2 :(得分:0)

RadioButton是一个双状态按钮,可以是checkedunchecked。对于此复合按钮,您应该使用方法isChecked()来了解其当前状态。

请参阅documentation

更新您的代码,如下所示:

if (rdbAM.isChecked()) {
        strTime = rdbAM.getText().toString();
    } else if(rdbPM.isChecked()){
        strTime = rdbPM.getText().toString();
    } else {
        AlertDialog.Builder WrongDateFormat = new AlertDialog.Builder(this);
        WrongDateFormat.setMessage("Please Select AM or PM");
        WrongDateFormat.setNeutralButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int id) {
                dialog.cancel();
            }
        });
        AlertDialog alertWrongDateFormat = WrongDateFormat.create();
        alertWrongDateFormat.show();
        return;
    }