Android - ToggleButton setChecked和setSelected不起作用

时间:2012-04-09 08:26:36

标签: android state sharedpreferences togglebutton

我要做的是检查SharedPreferences音量和振动是on还是off。 如果它在ToggleButton上,则应设置为on,否则设置为off

我已尝试在setChecked()上使用setSelected()ToggleButton,但未改变TogggleButton s状态。

我还尝试初始化truefalse的变量,以确保但仍然不起作用。

似乎有什么问题?

    optionsDB = getSharedPreferences(table, 0);

    String volReturned = optionsDB.getString("volume", "Couldn't load data");
    String vibReturned = optionsDB.getString("vibration", "Couldn't load data");
    Toast.makeText(this, "Vol: "+volReturned+" Vib: "+ vibReturned, Toast.LENGTH_LONG).show();
    boolean boolT = true;
    boolean boolF = false;
    if (volReturned=="On"){
        /*tbtnvol.setChecked(true);*/
        tbtnvol.setSelected(boolT);
    }else{
        tbtnvol.setSelected(boolF);
        }
    if (vibReturned=="On"){
        tbtnvib.setSelected(boolT);
    }else{
        tbtnvib.setSelected(boolF);
        }

2 个答案:

答案 0 :(得分:5)

而不是==使用.equals()进行字符串比较..

试试这个,

if (volReturned.equals("On")){
        /*tbtnvol.setChecked(true);*/
        tbtnvol.setSelected(boolT);
    }else{
        tbtnvol.setSelected(boolF);
        }
    if (vibReturned.equals("On")){
        tbtnvib.setSelected(boolT);
    }else{
        tbtnvib.setSelected(boolF);
        }

答案 1 :(得分:4)

嗯,有两种与ToggleView相关的方法:

  1. setChecked(布尔值)

  2. setSelected(布尔值)

  3. 它们都是成对使用的。如果要设置选中的切换视图,请将“true”传递给两者这些方法,反之亦然。

    原因是,setChecked()设置与视图对象关联的内部布尔值dataMember ,setSelected 设置与视图对象关联的UI

    是的,这是有线的,实际上一种方法应该设置UI和数据,但这是它的实现方式,因此这就是我们必须使用这些方法的方式。