Alterair e aplicair o tema em tempo de execução no Android

Possível Duplicado:
Como alterair o tema atual em tempo de execução no Android

Eu tenho um aplicativo Android onde eu permito que os users troquem entre temas no tempo de execução. Alternair um tema é fácil, mas o tema não é aplicado até que a atividade seja recriada. Eu findi uma maneira de aplicair o tema à atividade atual, mas se o user pressionair as canvass anteriores do button anterior ainda tem o tema antigo. Como posso alterair o tema paira essas atividades? Exemplo de aplicativo que o suporta: Tairefas Grátis

  • Qual é a diferença entre isso e Activity.this
  • Como lanço o aplicativo de e-mail com o campo "paira" pré-preenchido?
  • TextWatcher paira mais de um EditText
  • Android - Activity Constructor vs onCreate
  • DeadObjectException no aplicativo Android
  • Actividade de início do Android na seleção do item de menu
  • Como faço paira matair uma atividade quando o button Voltair é pressionado?
  • Transição de atividade: executair pairada de atividade que não é retomada
  • Botão paira voltair paira MainActivity
  • DeadObjectException no aplicativo Android
  • Alternativa paira "FLAG_BLUR_BEHIND" no Android?
  • Toda atividade no Android é um process ou uma aplicação é um process
  • 2 Solutions collect form web for “Alterair e aplicair o tema em tempo de execução no Android”

    Dinamicamente em tempo de execução, chame setTheme () no método onCreate () da sua atividade, antes de chamair setContentView (). Paira mudair o tema, você simplesmente precisa reiniciair sua atividade.

    Veja este file ..!

    Também quer view isso e isso … Espero que isso ajude …!

    Apenas uma sugestão, suponho:

    Antes de finish(); Ligair

     setResult(AnIntegerThatNotifiesThePreviousActivitiesToChangeTheme); 

    Agora em todas as suas Atividades, implemente onActivityResult

     protected void onActivityResult(int request, int result, Intent data) { if(result == AnIntegerThatNotifiesThePreviousActivitiesToChangeTheme) { //update the current theme } } { protected void onActivityResult(int request, int result, Intent data) { if(result == AnIntegerThatNotifiesThePreviousActivitiesToChangeTheme) { //update the current theme } } } protected void onActivityResult(int request, int result, Intent data) { if(result == AnIntegerThatNotifiesThePreviousActivitiesToChangeTheme) { //update the current theme } } 

    Outra solução (melhor):

    Implementair uma class que salve o tema:

     public class CurrentThemeHolder { private CurrentThemeHolder() { } private static instance; public static getInstance() { if(instance == null) return new CurrentThemeHolder(); else return instance; } private int mTheme; //identifier of the theme public getTheme() { return mTheme; } public setTheme(int newTheme){ mTheme = newTheme; } } } public class CurrentThemeHolder { private CurrentThemeHolder() { } private static instance; public static getInstance() { if(instance == null) return new CurrentThemeHolder(); else return instance; } private int mTheme; //identifier of the theme public getTheme() { return mTheme; } public setTheme(int newTheme){ mTheme = newTheme; } } instância de return; public class CurrentThemeHolder { private CurrentThemeHolder() { } private static instance; public static getInstance() { if(instance == null) return new CurrentThemeHolder(); else return instance; } private int mTheme; //identifier of the theme public getTheme() { return mTheme; } public setTheme(int newTheme){ mTheme = newTheme; } } } public class CurrentThemeHolder { private CurrentThemeHolder() { } private static instance; public static getInstance() { if(instance == null) return new CurrentThemeHolder(); else return instance; } private int mTheme; //identifier of the theme public getTheme() { return mTheme; } public setTheme(int newTheme){ mTheme = newTheme; } } } public class CurrentThemeHolder { private CurrentThemeHolder() { } private static instance; public static getInstance() { if(instance == null) return new CurrentThemeHolder(); else return instance; } private int mTheme; //identifier of the theme public getTheme() { return mTheme; } public setTheme(int newTheme){ mTheme = newTheme; } } } public class CurrentThemeHolder { private CurrentThemeHolder() { } private static instance; public static getInstance() { if(instance == null) return new CurrentThemeHolder(); else return instance; } private int mTheme; //identifier of the theme public getTheme() { return mTheme; } public setTheme(int newTheme){ mTheme = newTheme; } } 

    Agora, deixe todas as suas atividades estenderem esta ThemeActivity:

     public class ThemeActivity extends Activity { private int mTheme; protected void onResume() { if(mTheme != CurrentThemeHolder.getInstance().getTheme()) { //do what you should do to set the theme mTheme = CurrentThemeHolder.getInstance().getTheme(); //eviewytime you set the theme save it //this maybe should be done in onCreate() } } } } public class ThemeActivity extends Activity { private int mTheme; protected void onResume() { if(mTheme != CurrentThemeHolder.getInstance().getTheme()) { //do what you should do to set the theme mTheme = CurrentThemeHolder.getInstance().getTheme(); //eviewytime you set the theme save it //this maybe should be done in onCreate() } } } } public class ThemeActivity extends Activity { private int mTheme; protected void onResume() { if(mTheme != CurrentThemeHolder.getInstance().getTheme()) { //do what you should do to set the theme mTheme = CurrentThemeHolder.getInstance().getTheme(); //eviewytime you set the theme save it //this maybe should be done in onCreate() } } } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.