为什么我的单选按钮不会更改选中状态,如切换按钮(Android)?

时间:2012-05-29 21:06:41

标签: android radio-button toggle togglebutton

出于修道者的目的,我需要使用一个单选按钮作为切换按钮。不幸的是,我只能保持检查或取消选中但不能重新检查。我已经尝试过我能想到的每一种组合,但却无法让它发挥作用。 toggle()将无法工作,因为它只会检查未选中的单选按钮。我尝试过isChecker()和setChecked()的组合,但它不起作用。这就是我目前所拥有的:

    pi.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {               
            Log.e("Pistate before",Boolean.toString(pistate));

            if(pistate=true)
                pi.setChecked(false);
            if(pistate=false)
                pi.setChecked(true);
            if(pi.isChecked())
                pistate=true;
            if(!pi.isChecked())
                pistate=false;

            Log.e("Pistate after",Boolean.toString(pistate));
        }
    });

一旦取消选中,就不会重新检查。之前和之后的活动读取都是假的,因为我的if()应该改变它,对吧?

3 个答案:

答案 0 :(得分:4)

好吧,因为这是一个比较,你应该使用==

if(pistate == true)

或者,如果它是您想要的对象引用

if(object.equals(pistate))

答案 1 :(得分:4)

您无需使用单独的Boolean来维持“州”,只需执行以下操作即可...

pi.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        pi.setChecked(!pi.isChecked());
    }
});

答案 2 :(得分:1)

和我说的一样好。 使用==会有所帮助。 从来没有这种方法更加复杂。 我建议:

pi.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {               
        Log.e("Pistate before",Boolean.toString(pistate));

        pistate = !pistate;
        pi.setChecked(pistate);

        Log.e("Pistate after",Boolean.toString(pistate));
    }
});