Метод Android ToggleButton setChecked (...) не меняет статус кнопки - PullRequest
2 голосов
/ 06 ноября 2011

У меня есть кнопка переключения, которая не отвечает на мой метод 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 ]

5 голосов
/ 07 ноября 2011

Код, который я представил, был просто скопирован разными способами. Короче говоря, я устанавливал логическое значение после того, как инициализировал и установил проверенный статус кнопки. Извинения.

4 голосов
/ 07 ноября 2011

Возможно, необходимо вызвать View.requestLayout () или View.forceLayout () для кнопок View, чтобы обновить состояние кнопок

4 голосов
/ 06 ноября 2011

Пожалуйста, используйте примитивное логическое значение, чтобы установить состояние

//set true or false based on your prefs
boolean mBool = true;
mToggle.setChecked(mBool);
0 голосов
/ 06 ноября 2011

Поскольку метод setChecked () кнопки принимает в качестве параметра примитив boolean. вы предоставляете переменную Boolean (класс оболочки). Обычно это должно быть хорошо, однако это не работает для этого конкретного метода, поэтому вам может потребоваться вручную распаковать переменную или изменить тип mBool на boolean

...