我有一个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"/>
有什么想法吗?
答案 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