danilochagov
@danilochagov

Не работает код по запрету звука через настройки?

Делаю приложение и надо чтобы в настройках можно было убрать звук, делаю сохранение данных через sharedPreferences, но switch не сохраняет положение(checked, nonchecked) и звук всё равно идёт. Вот код из SettingsActivity в методе onCreate() :

cb_sound_settings = findViewById(R.id.cb_settings_sounds);
  if (cb_sound_settings.isChecked()) {
        sharedPreferences = getSharedPreferences("MyPref", MODE_PRIVATE);
        editor = sharedPreferences.edit();
        editor.putBoolean("Sounds", true);
        editor.apply();
    } else {
        sharedPreferences = getSharedPreferences("MyPref", MODE_PRIVATE);
        editor = sharedPreferences.edit();
        editor.putBoolean("Sounds", false);
        editor.apply();
    }

    sharedPreferences = getSharedPreferences("MyPref", MODE_PRIVATE);
    if (sharedPreferences.getBoolean("Sounds", true)) {
        cb_sound_settings.setChecked(true);
    } else {
        cb_sound_settings.setChecked(false);
   }


Xml код из layout_settings.xml:

<Switch
    android:id="@+id/cb_settings_sounds"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="5dp"
    android:background="@color/colorGray"
    android:checked="true"
    android:padding="15dp"
    android:text="@string/settings_sounds"
    android:textColor="@color/colorBlack"
    android:textSize="18sp" />


И код из MainActivity, где должен был быть запрет на звук:

public void showSuccessfulToastVerb () {
    Toast.makeText(MainActivity.this, "It's not a irregular verb", Toast.LENGTH_SHORT).show();
    successfulSound = MediaPlayer.create(this, R.raw.successful);
    sharedPreferences = getSharedPreferences("MyPref", MODE_PRIVATE);
    if (sharedPreferences.getBoolean("Sounds", true)) {
        successfulSound.start();
    }
}


Помогите пж, таже фигня была когда пытался запретить анимацию (
  • Вопрос задан
  • 41 просмотр
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Потому что ты не делаешь реакцию на изменение состояния. OnCheckedChangeListener или как-то так.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы