2011-05-31 5 views
1

У меня есть опция темы изменения в настройках экрана моего приложения и предоставление некоторых настраиваемых тем на выбор.Как изменить/сбросить пользовательскую тему из Java-кода в android

Прежде всего, я считаю, что вы не можете установить тему для всего приложения из своего java-кода сразу (пожалуйста, обратитесь, если есть какой-либо способ сделать это), вот почему я вызываю setTheme (my_theme) перед super.onCreate() в каждом действии приложения. Теперь, когда пользователь меняет активность, это будет отражать только во время перезапуска любой активности (because setTheme() находится в OnCreate()).

Так что вопрос заключается в том, как SetTheme() работает в OnResume() или где-либо еще в коде, потому что я хочу отразить эти изменения на предыдущих экранах в Activity Stack.

отмечают, что setTheme() работает, прежде чем setContentVIew() только ......

ответ

1

Да, как говорят the docs, вам нужно установить тему, прежде чем какие-либо виды инстанцируются, так это выглядит, как вам нужно будет для перезапуска всей вашей деятельности.

Там, наверное, лучший путь, но один из способов обеспечения вашей деятельности полностью перезагружать в onResume():

finish(); 
startActivity(getIntent()); 

Это будет переработать существующие намерения. Тем не менее, я бы сначала посмотрел, чтобы увидеть, есть ли более простой способ обеспечить перезапуск действий - может быть просто свойство манифеста. Дайте нам знать, что вы найдете.

+0

Я избегаю перезапуска, потому что он потеряет мои данные и вычисления на экране dat. все, что я ищу, это то, что воссоздает только макет, а не активность. –

+0

Возникает вопрос: когда вы устанавливаете новую тему в onResume, если вы снова приостанавливаете и возобновляете (например, вернувшись в настройки и обратно), наконец-то изменится ли тема? Потому что, если это не так, казалось бы, в значительной степени уверен, что ваш единственный выбор - перезапустить деятельность. –

+0

Соглашайтесь с вами ... Thnk's for effort. –

Смежные вопросы