Frage

Ich bin versucht, einen Benutzer-gewählte Thema zu bekommen und fühle mich wie ich bin frustrierende schließen. Definition des Themas in AndroidManifest.xml funktioniert, wie es sollte, aber (wie es am besten kann ich sagen) kann nicht basierend auf App-Einstellungen ändern:

<application 
    android:theme="@style/theme_sunshine" 
    android:icon="@drawable/icon" 
    android:label="@string/app_name">

Alternativ kann dynamisch in jeder Aktivität Einstellung auch funktioniert:

someChosenTheme = PreferenceManager.getDefaultSharedPreferences(this).getString("themePreference", "theme_twilight");
setTheme(someOtherChosenTheme);

Aber das scheint chaotisch, und ich möchte lieber das Thema für die gesamte App an einem Ort festgelegt. Mein erster Gedanke war, den Anwendungskontext, sobald meine Haupttätigkeit Einführungen zu packen und macht es dort:

getApplicationContext().setTheme(R.style.theme_dummy);

Wie am besten ich sagen kann, this sollte den Trick, aber in der Tat tun. Ist die oben gültig, und wenn ja, könnte ich etwas anderes dumm tun?

Ich arbeite in API-Ebene 3 wenn diese Fragen. Prods in der richtigen Richtung sehr geschätzt!

Verwandte Frage.

War es hilfreich?

Lösung

Erstellen Sie eine Basisaktivität für Ihre App und außer Kraft setzen onCreate das Thema einzustellen. Leiten Sie alle Ihre anderen Aktivitäten von dieser Basis Aktivität.

Überprüfen Sie auch dieses Tutorial: http://www.androidengineer.com/2010/06 /using-themes-in-android-applications.html

Andere Tipps

Es kann eine gute Lösung für dieses Problem sein, aber ich konnte man nicht finden, so dass ich eine wenig statische Hilfsmethode in einer Hilfsklasse machen gelandet, die eine Aktivität nimmt und im Grunde führt die beiden Linien, die Sie geschrieben hat. Sicher, es ist nicht perfekt, aber einfach nur mit einer kurzen Codezeile zu jeder onCreate() Methode in meiner app war erträglich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top