【问题标题】:Android - ToggleButton setChecked and setSelected not workingAndroid - ToggleButton setChecked 和 setSelected 不起作用
【发布时间】:2012-04-21 16:16:43
【问题描述】:

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

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

我还尝试为 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);
        }

【问题讨论】:

    标签: android state sharedpreferences togglebutton


    【解决方案1】:

    代替== 使用.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);
            }
    

    【讨论】:

    • 谢谢!像魅力一样工作! :)
    【解决方案2】:

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

    1. setChecked(布尔值)

    2. setSelected(布尔值)

    而且它们都是成对使用的。如果您想设置切换视图被选中,请将“true”传递给both这些方法,反之亦然。

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

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

    【讨论】:

      猜你喜欢
      • 2019-10-09
      • 1970-01-01
      • 2016-11-10
      • 2020-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多