2017-02-04 1 views
1

Comment changer de thème à l'intérieur de l'application Android J'ai une activité avec des paramètres où je peux sélectionner le thème Light ou Dark.Android Changer de thème Inside App

Paramètres Activité enter image description here Puis-je utiliser quelque chose comme ceci:

public class OTGEnabler extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener 
{ 
@Override 
protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_otgenabler); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 

SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); 
     String theme = sharedPrefs.getString("Choose Theme",null); 
     if(theme != null && theme.equals("Light")) 
     { 
      setTheme(R.style.AppTheme); 
     } 
     else 
     { 
      setTheme(R.style.AppTheme_AppBarOverlay); 
     } 
    } 
} 

est ici journal d'erreur:

02-04 07: 16: 40,023 23924-23924/com. example.pavle.usbotgenabler E/AndroidRuntime: FATAL EXCEPTION: principal Processus: com.example.pavle.usbotgenabler, PID: 23924 java.lang.RuntimeException: Impossible de démarrer l'activité ComposantInfo {com.example.pavle.usbotgenabler/com.example.pavle.usbotgenabler.otg_enaber.OTGEnabler}: java.lang.IllegalStateException: Cette activité a déjà une action bar fourni par le décor de la fenêtre. Ne demandez pas Window.FEATURE_SUPPORT_ACTION_BAR et définissez windowActionBar sur false dans votre thème pour utiliser une barre d'outils à la place. à android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2416) à android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2476) à android.app.ActivityThread.-wrap11 (ActivityThread.java) au android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1344) à android.os.Handler.dispatchMessage (Handler.java:102) à android.os.Looper.loop (Looper.java:148) à android.app.ActivityThread.main (ActivityThread.java:5417) à java.lang.reflect.Metho d.invoke (méthode native) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) à com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616) Causé par: java.lang.IllegalStateException: Cette activité a déjà une barre d'action fournie par le décor de la fenêtre. Ne demandez pas Window.FEATURE_SUPPORT_ACTION_BAR et définissez windowActionBar sur false dans votre thème pour utiliser une barre d'outils à la place. à android.support.v7.app.AppCompatDelegateImplV9.setSupportActionBar (AppCompatDelegateImplV9.java:203) à android.support.v7.app.AppCompatActivity.setSupportActionBar (AppCompatActivity.java:133) à com.example.pavle .usbotgenabler.otg_enaber.OTGEnabler.onCreate (OTGEnabler.java:80) à android.app.Activity.performCreate (Activity.java:6237) à android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1107) à android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2369) à android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2476) à android.app.ActivityThread.-wrap11 (ActivityThread.java) à android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1344) chez android.os.Handler.dispatchMessage (Handler.java:102) à android.os.Looper.loop (Looper.java:148) à android.app.ActivityThread.main (ActivityThread.java:5417) à java.lang.reflect.Method. invoquer (native Method) à com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) à com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616)

+0

Qu'est-ce qui se passe avec votre code? – Raghunandan

+0

Lorsque je lance l'application, l'application ger a cessé de fonctionner !!! – pavlenis1906

+0

puis son un pls pls poster les journaux pertinents – Raghunandan

Répondre

0

vous pouvez utiliser setTheme(..) à l'intérieur onCreateavant appelant setContentView(...) et super.oncreate() et il devrait fonctionner, pas après eux!


aide supplémentaire

Ajouter un texte modifier dans votre vue

Thème Un

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorAccent">@color/colorAccent</item> 
</style> 

Thème Deux

<style name="AppThemeTwo" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorAccent">@color/blue</item> 
</style> 

Si vous ajoutez ces deux, vous remarquerez la différence dans votre EditText comme la couleur du curseur curseur couleur du curseur etc ..

+0

@ pavlenis1906 Si vous avez une autre question, posez-la en cliquant sur le bouton [Poser une question] (// pileoverflow.com/questions/ask). Veuillez ne pas harceler les répondeurs. –

0

Dans androidManifest.xml modifier le thème de l'activité des paramètres sur le nouveau thème que vous souhaitez activer pour les paramètres y.

ce nouveau thème doit être défini dans valeurs-> style.xml

Sinon ajouter à présenter les paramètres dans le fichier AndroidManifest.xml activité suivante balise xml android: thème

+0

J'ai ajouté le thème, mais quand je sélectionne les paramètres du tiroir de navigation, j'obtiens l'application d'erreur a cessé de fonctionner !!! pavlenis1906

+0

pouvez-vous partager un message d'erreur provenant de la sortie de chat de journal. – vicky

+0

Pourquoi voulez-vous connecter chat? – pavlenis1906