Подтвердить что ты не робот

Программно?

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

<application 
    android:theme="@style/theme_sunshine" 
    android:icon="@drawable/icon" 
    android:label="@string/app_name">

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

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

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

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

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

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

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

4b9b3361

Ответ 1

Создайте базовую активность для своего приложения и переопределите onCreate, чтобы установить тему. Выведите все ваши другие действия из этой базы.

Также проверьте этот учебник: http://www.androidengineer.com/2010/06/using-themes-in-android-applications.html

Ответ 2

Возможно, это может быть хорошим решением, но я не смог найти его, поэтому я создал небольшой статический вспомогательный метод в вспомогательном классе, который выполняет Activity и в основном выполняет те две строки, которые вы написали. Конечно, это не идеально, но просто добавление одной короткой строки кода для каждого метода onCreate() в моем приложении было приемлемым.