Android Toggle Button setChecked(...)方法不改变按钮的状态

时间:2011-11-06 08:23:36

标签: android togglebutton

我有一个togglebutton,它没有响应我的setChecked(...)方法。这是代码:

mBool = mPrefs.getBoolean("buttondefault", true);
Boolean b = mBool; //Only creating this for Logging, mBool IS PRIMITIVE
Log.e("Update pref", b.toString());
mToggle = (ToggleButton)findViewById(R.id.ac_toggle);
mToggle.setOnClickListener(this);
mToggle.setChecked(mBool);

日志报告mBool为 true ,当我执行mToggle.setChecked(mBool)时按钮保持在关闭状态。

这是按钮的xml:

<ToggleButton android:id="@+id/ac_toggle"
android:textOn="Yes"
android:textOff="No"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3sp"
android:layout_weight="5"/>

有什么想法吗?

4 个答案:

答案 0 :(得分:5)

我提供的代码只是从不同的方法中复制而来。长话短说我初始化后设置了布尔值并设置了按钮的检查状态。道歉。

答案 1 :(得分:4)

请使用原始布尔值设置状态

//set true or false based on your prefs
boolean mBool = true;
mToggle.setChecked(mBool);

答案 2 :(得分:4)

可能需要在按钮View上调用View.requestLayout()或View.forceLayout()来刷新按钮状态

答案 3 :(得分:0)

因为按钮的setChecked()方法接受原始boolean作为参数。您正在提供Boolean(包装类)变量。通常情况下应该没问题,但它不适用于这种特定方法,因此您可能需要手动取消对变量的取消或将mBool的类型更改为boolean