Программное переключение темы для всего приложения?

Я пытаюсь получить тему, выбранную пользователем, и чувствую, что я разочаровывающе близко. Определение темы в AndroidManifest.xml работает так, как должно, но (насколько я могу судить) не может быть изменено в зависимости от настроек приложения:


В качестве альтернативы также работает динамическая установка его для каждого действия:

someChosenTheme = PreferenceManager.getDefaultSharedPreferences(this).getString("themePreference", "theme_twilight");
setTheme(someOtherChosenTheme);

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

getApplicationContext().setTheme(R.style.theme_dummy);

Насколько я могу судить, this должен помочь, но на самом деле он ничего не делает - все приложение имеет стиль Android по умолчанию. Верно ли указанное выше, и если да, Могу ли я сделать что-нибудь еще глупое?

Я работаю на уровне API 3, если это важно. Мы очень ценим подсказки в правильном направлении!

Связанный вопрос.

38
задан Community 23 May 2017 в 12:25
поделиться