Изменение состояния переключателя Android

В настоящее время я разрабатываю приложение, в котором есть меню, а один из параметров в меню – «Настройки», где пользователь может в принципе решить отключить звуки и другие подобные вещи. В настоящее время у меня есть два переключателя в настройках. Вот код Java для активности настроек:

import android.support.v7.app.ActionBarActivity; public class Options extends ActionBarActivity { private Switch ding; private Switch countdown; public boolean isDingChecked; public boolean isCountdownChecked; public static final String PREFS = "examplePrefs"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_options); ding = (Switch) findViewById(R.id.switch1); ding.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { SharedPreferences examplePrefs = getSharedPreferences(PREFS,0); Editor editor = examplePrefs.edit(); editor.putBoolean("userMessage", isChecked); editor.commit(); //System.out.println(examplePrefs.getBoolean("userMessage", isChecked)); isDingChecked = examplePrefs.getBoolean("userMessage", isChecked); System.out.println(isDingChecked + " is ding checked"); ding.setChecked(isDingChecked); } }); countdown = (Switch) findViewById(R.id.switch2); countdown.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // do something, the isChecked will be // true if the switch is in the On position isCountdownChecked = isChecked; } }); } } 

Я могу использовать логические значения в своей другой деятельности, поэтому SharedPreference отлично работает. Однако, когда я вернусь к своей активности в меню и вернусь к этому действию параметров, состояние переключателей вернется к значениям по умолчанию, являющимся истинными, независимо от того, что пользователь указывает. В любом случае, я могу это исправить?

 ding.setChecked(isDingChecked) 

На самом деле я ничего не делаю. Я знаю, что в прошлом я задавал вопрос, похожий на это, это просто, что у меня не было большой активности, и я уже давно занимаюсь этой проблемой. Благодаря!

    Попробуйте что-то вроде этого:

      @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_options); ding = (Switch) findViewById(R.id.switch1); //grab prefs first final SharedPreferences examplePrefs = getSharedPreferences(PREFS,0); final Editor editor = examplePrefs.edit(); ding.setChecked(examplePrefs.getBoolean("your_key", false)); //false default ding.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { //commit prefs on change editor.putBoolean("your_key", isChecked); editor.commit(); System.out.println(isDingChecked + " is ding checked"); } }); 

    Метод setChecked(value) коммутатора работает совершенно нормально, но вы вызываете его внутри onCheckedChanged(...) который не нужен.
    Поэтому, чтобы установить Switch на самое последнее значение, вы должны загрузить настройки и установить проверенное состояние вне прослушивателя setOnCheckedChangeListener .

     @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_options); // your current code //load and set preferences SharedPreferences examplePrefs = getSharedPreferences(PREFS,0); isDingChecked = examplePrefs.getBoolean("userMessage", isChecked); ding.setChecked(isDingChecked); } 
    Intereting Posts
    Android SlidingUpPanelLayout ускорить событие Как изменить стиль ImageButton программно Как запустить приложение в Google Glass с помощью голосовой команды Запуск службы из класса приложения Как изменить размер или цвет моего счетчика? Как получить минимальные требования к оборудованию для приложения Android Воспроизведение / Пауза YoutubePlayer программно после возобновления работы с фона API11 (и теперь12) и Spannable, приводящий к запуску NPE Android: BufferedOutputStream необходимо при сохранении файла во внутренние данные? Как я могу сделать процесс, когда некоторые клики на кнопке меню Android – Использование приложения sencha touch2 Волейбол отключает кеш для одного запроса Вывод терминалов на студии Android Прозрачная навигация без отображения макета под панелью состояния Google Analytics SDK v4 Отслеживание кампаний Отправка по электронной почте Нет данных Как уменьшить размер Android APK?