Android - ToggleButton setChecked和setSelected不起作用

Har*_*ter 2 android state togglebutton sharedpreferences

我要做的是检查SharedPreferences音量和振动是否为onoff.如果是,ToggleButton应该设置为on,否则,off.

我使用已经尝试过setChecked(),并setSelected()ToggleButton秒,但它并没有改变TogggleButtonS'的状态.

我也尝试初始化变量true,false只是为了确保但仍然不起作用.

什么似乎是问题?

    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);
        }
Run Code Online (Sandbox Code Playgroud)

use*_*305 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);
        }
Run Code Online (Sandbox Code Playgroud)


Par*_*oor 5

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

  1. setChecked(布尔值)

  2. setSelected(布尔值)

并且它们都是成对使用。如果要将切换视图设置为选中,则将“ true”传递给两种方法,反之亦然。

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

是的,这是有线方式,实际上一个方法应该同时设置UI和数据,但这是如何实现的,因此这就是我们必须成对使用这些方法的方式。