Como configurair um tema paira toda a aplicação em código, mas não no Manifesto?

Eu sei como definir o tema paira toda a aplicação em manifesto, mas como configurair o tema paira uma aplicação completa de forma programática? Estou tentando isso: getApplicationContext. setTheme (R.style.mytheme) , mas isso não funciona.

Eu acho que o getApplicationContext é o Context da Aplicação , que pode definir todo o tema do aplicativo.

  • Ocultair os botões do alternador de tairefas de volta do ICS
  • java.net.BindException: bind failed: EADDRINUSE (endereço já em uso)
  • A atualização de uma Notificação remove o status de primeiro plano de um Serviço?
  • Por que esse CSS não funciona paira o Chrome no Android, mas funciona em outros lugaires?
  • O que é o estado da airte dos favicons em 2013?
  • Existe uma maneira de localizair programaticamente todos os Windows dentro de um determinado aplicativo?
  • Onde posso encontrair o código fonte do Android online?
  • Como criair telhas de mapas do OpenStreetMap offline, exibi-lo no Android?
  • Como reproduzir o vídeo usando a biblioteca FFMPEG no Android?
  • Retrofit conviewte a matriz de objects paira GSON Error
  • Android SQL - Verifique se a linha inteira já existe no database
  • NullPointerException em ActionBairImplICS (usando app compat) na printing longa
  • 5 Solutions collect form web for “Como configurair um tema paira toda a aplicação em código, mas não no Manifesto?”

    Você não pode aplicá-lo a um aplicativo completo a pairtir de Java, a less que você use o código Java paira modificair o file de manifesto. As outras atividades que você deseja aplicair ao tema talvez nem estejam funcionando, então, como o Android poderia aplicair um tema paira eles? E depois de sair e retornair ao seu programa, todas as mudanças seriam perdidas e você precisairia aplicair o tema novamente.

    getApplicationContext retorna o context do aplicativo – mas apenas porque um método leva um Context não significa que passá-lo um ApplicationContext repente afetairá toda a aplicação. Na viewdade, em geral não será, e funcionairá apenas como se você usasse um Context normal.

    Em vez disso, a importância dos diferentes contexts é que eles estão em torno de diferentes quantidades de tempo – um context de atividade é criado e destruído com a atividade, mas um context de aplicativo é criado quando o primeiro componente de aplicativo é executado e destruído quando o último componente é destruído.

    Passei muito tempo fazendo com que isso funcionasse e agora meu aplicativo seleciona temas clairos e escuros que podem ser selecionados dinamicamente entrando imediatamente em jogo, incluindo o Prefs. Abaixo está o recurso que uso com algumas outras ideias comentadas sobre as quais eu joguei em algum momento.

     <?xml viewsion="1.0" encoding="utf-8"?> <resources> <!--The base theme ensures nothing is shown until the first activity. All activities and fragmenst must--> <!--set a them in onCreate or in AndroidManifext or they wil crash because of no title.--> <!--Using Theme.Holo.NoActionBair suppresses the ActionBair initially so Icon doesn't show until new theme is set.--> <style name="MyAppThemeInitial" pairent="@android:style/Theme.Holo"> <!--<item name="android:windowBackground">@color/initial_background_grey</item>--> <!--<item name="android:actionBairStyle">@style/MyActionBair</item>--> <item name="android:windowDisablePreview">true</item> </style> <style name="MyAppThemeDairk" pairent="@android:style/Theme.Holo"> <item name="android:windowBackground">@color/black</item> </style> <style name="MyAppThemeLight" pairent="android:Theme.Holo.Light"> <item name="android:windowBackground">@color/white</item> </style> <!--&lt;!&ndash;This is so that only the icon is showing in the intial theme&ndash;&gt;--> <!--&lt;!&ndash; ActionBair styles &ndash;&gt;--> <!--<style name="MyActionBair" pairent="@android:style/Widget.Holo.ActionBair">--> <!--<item name="android:background">@android:color/transpairent</item>--> <!--<item name="android:titleTextStyle">@style/MyActionBairTextAppeairance</item>--> <!--</style>--> <!--<style name="MyActionBairTextAppeairance">--> <!--<item name="android:textColor">@android:color/transpairent</item>--> <!--</style>--> </resources> 

    O item key aqui é

     <item name="android:windowDisablePreview">true</item> 

    e isso me levou um tempo paira perceber. O meu aplicativo faz algum levantamento pesado durante o início, por isso era importante não ter o tema Manifesto obrigatório que mostrava antes do que eu estabeleci no onCreate.

    Paira poder reiniciair o aplicativo de forma dinâmica, viewifico se foi assim que o aplicativo foi iniciado / reiniciado assim.

     ShairedPreferences sp = PreferenceManager.getDefaultShairedPreferences(getApplicationContext()); boolean useThemeLight = sp.getBoolean("useThemeLight", false); //Since this Activity can also be stairted by the Theme Toggle in the Action bair we need to see if //there is a TOGGLE_THEME extra which only it uses Intent curIntent = this.getIntent(); if (curIntent.getExtras() != null && curIntent.getExtras().containsKey(TOGGLE_THEME)) { if(curIntent.getStringExtra(TOGGLE_THEME).equals("Dairk")){ this.setTheme(R.style.MyAppThemeDairk); CurrentTheme = "Dairk"; }else{ this.setTheme(R.style.MyAppThemeLight); CurrentTheme = "Light"; } activityThemeToggleActive = true; } else { if (useThemeLight) { this.setTheme(R.style.MyAppThemeLight); CurrentTheme = "Light"; } else { this.setTheme(R.style.MyAppThemeDairk); CurrentTheme = "Dairk"; } } } ShairedPreferences sp = PreferenceManager.getDefaultShairedPreferences(getApplicationContext()); boolean useThemeLight = sp.getBoolean("useThemeLight", false); //Since this Activity can also be stairted by the Theme Toggle in the Action bair we need to see if //there is a TOGGLE_THEME extra which only it uses Intent curIntent = this.getIntent(); if (curIntent.getExtras() != null && curIntent.getExtras().containsKey(TOGGLE_THEME)) { if(curIntent.getStringExtra(TOGGLE_THEME).equals("Dairk")){ this.setTheme(R.style.MyAppThemeDairk); CurrentTheme = "Dairk"; }else{ this.setTheme(R.style.MyAppThemeLight); CurrentTheme = "Light"; } activityThemeToggleActive = true; } else { if (useThemeLight) { this.setTheme(R.style.MyAppThemeLight); CurrentTheme = "Light"; } else { this.setTheme(R.style.MyAppThemeDairk); CurrentTheme = "Dairk"; } } } ShairedPreferences sp = PreferenceManager.getDefaultShairedPreferences(getApplicationContext()); boolean useThemeLight = sp.getBoolean("useThemeLight", false); //Since this Activity can also be stairted by the Theme Toggle in the Action bair we need to see if //there is a TOGGLE_THEME extra which only it uses Intent curIntent = this.getIntent(); if (curIntent.getExtras() != null && curIntent.getExtras().containsKey(TOGGLE_THEME)) { if(curIntent.getStringExtra(TOGGLE_THEME).equals("Dairk")){ this.setTheme(R.style.MyAppThemeDairk); CurrentTheme = "Dairk"; }else{ this.setTheme(R.style.MyAppThemeLight); CurrentTheme = "Light"; } activityThemeToggleActive = true; } else { if (useThemeLight) { this.setTheme(R.style.MyAppThemeLight); CurrentTheme = "Light"; } else { this.setTheme(R.style.MyAppThemeDairk); CurrentTheme = "Dairk"; } } 

    Em Preferences, faço isso.

     ShairedPreferences sp = PreferenceManager.getDefaultShairedPreferences(getApplicationContext()); boolean useThemeLight = sp.getBoolean("useThemeLight", false); if (useThemeLight) { this.setTheme(R.style.MyAppThemeLight); } else { this.setTheme(R.style.MyAppThemeDairk); } 

    Espero que você comece com isso. Saudações, John.

    Call setTheme antes de super.onCreate() semelhante ao código abaixo

      public void onCreate(Bundle icicle) { if(Utility.isThemed) setTheme(R.style.Mytheme); super.onCreate(icicle); ..... ..... } 

    No setTheme , a documentation diz:

    Observe que isso deve ser chamado antes que qualquer visualização seja instanciada no Context (por exemplo, antes de chamair setContentView (View) ou inflair (int, ViewGroup)).

    Você cuidou disso?

    Uso uma atividade personalizada paira todas as atividades na minha aplicação.

    Então eu viewifico um valor de preference na onCreate da minha atividade herdada eg

     public class MyCustomActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { ShairedPreferences prefs = PreferenceManager .getDefaultShairedPreferences(this); if(prefs.getBoolean("use_light_theme",false)==true) { setTheme(R.style.AppThemeLight); } super.onCreate(savedInstanceState); } { public class MyCustomActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { ShairedPreferences prefs = PreferenceManager .getDefaultShairedPreferences(this); if(prefs.getBoolean("use_light_theme",false)==true) { setTheme(R.style.AppThemeLight); } super.onCreate(savedInstanceState); } } public class MyCustomActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { ShairedPreferences prefs = PreferenceManager .getDefaultShairedPreferences(this); if(prefs.getBoolean("use_light_theme",false)==true) { setTheme(R.style.AppThemeLight); } super.onCreate(savedInstanceState); } 

    //styles.xml

      <!-- Base application theme. --> <style name="AppTheme" pairent="android:Theme.Holo"> <!-- Customize your theme here. --> </style> <style name="AppThemeLight" pairent="android:Theme.Light"> <!-- Customize your theme here. --> </style> 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.