Я пытаюсь получить выбранную пользователем тему и чувствую, что я расстраиваюсь. Определение темы в 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);
Насколько я могу сказать, this должен сделать трюк, но на самом деле это ничего не делает - у всего приложения есть стиль Android по умолчанию. Является ли это выше, и если да, могу ли я сделать что-то еще глупое?
Я работаю над уровнем API 3, если это имеет значение. Добродетели в правильном направлении высоко оценили!
Это, по существу, то, что я делаю. Это все еще не идеально, так как нет множественного наследования, например. для пользовательской ListActivity, но неудобства незначительны. Очень полезный учебник, хотя я его уже прочитал :) – Cheezmeister
У меня acutally есть BaseListActivity и Base (Generic) Activity в каждом приложении, которое я делаю. BaseListActivity имеет общую обработку CRUD (чтение, добавление, редактирование, удаление), поэтому очень просто создать новую активность списка и просто переопределить несколько методов. Конечно, если я добавлю MapActivity или TabActivity, мне также нужно будет создать BaseXActivity для них. Иногда многократное наследование просто лучше :) – peter3
Так что добавление setTheme для каждой активности, до того, как вызывается «setContentView», действительно является правильным решением? нет ли единого системного решения? также, что происходит со всеми действиями, которые уже живы? –