3

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

我已经尝试过在s 上使用setChecked()和,但它并没有改变s 的状态。setSelected()ToggleButtonTogggleButton

true我还尝试为and初始化一个变量,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);
        }
4

2 回答 2

6

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

  1. setChecked(布尔值)

  2. setSelected(布尔值)

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

原因是,setChecked()设置与您的视图对象关联的内在布尔数据成员,而 setSelected设置与您的视图对象关联的 UI

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

于 2016-08-05T15:23:12.590 回答
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);
        }
于 2012-04-09T08:32:41.297 回答