Как программно установить тему первого и второго занятия? - PullRequest
1 голос
/ 24 марта 2019

Я создаю приложение с двумя действиями и хочу установить кнопку включения темы в первом и втором действии.

Метод setTheme () работает только при первом действии

    if(AppCompatDelegate.getDefaultNightMode() == AppCompatDelegate.MODE_NIGHT_YES) {
        setTheme(R.style.OLEDTheme);
    } else {
        setTheme(R.style.AppTheme);
    }
    Switch oledModeSwitch = (Switch) findViewById(R.id.OLEDSwitch);
    if (AppCompatDelegate.getDefaultNightMode() == AppCompatDelegate.MODE_NIGHT_YES) {
        oledModeSwitch.setChecked(true);
    }
    oledModeSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean Check) {
            Intent intent = new Intent(getApplicationContext(), SettingsActivity.class);
            finish();
            if (Build.VERSION.SDK_INT >= 21) {
                overridePendingTransition(R.anim.from_alpha, R.anim.to_alpha);
            }
            startActivity(intent);
            if (Check) {
                Toast.makeText(getApplicationContext(), "Тема успешно активирована", Toast.LENGTH_SHORT).show();
                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
            } else {
                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
                Toast.makeText(getApplicationContext(), "Тема успешно дезактивирована", Toast.LENGTH_SHORT).show();
            }
        }
    });

Только тема установленапервое действие, но я ожидаю, что установлено на первое и второе действие

1 Ответ

0 голосов
/ 25 марта 2019

При вызове setTheme() меняется только тема для Activity, который совершил вызов.Если вы хотите изменить тему для всего вашего приложения, то вы должны записать настройку темы в SharedPreferences, а затем в каждом Activity вы должны прочитать текущую тему из SharedPreferences и вызвать setTheme() в этом Activity.

...