Kullanıcı tarafından seçilen bir temayı bulmaya çalışıyorum ve hayal kırıklığına uğramış gibi hissediyorum. AndroidManifest.xml
çalışmalarında tema (en iyi ben anlarım) olması gerektiği, ancak tanımlama uygulaması tercihlerine göre değişir edemez: AlternatifUygulama genelinde tema programlı olarak mı değiştiriliyor?
<application
android:theme="@style/theme_sunshine"
android:icon="@drawable/icon"
android:label="@string/app_name">
her aktivitede dinamik olarak ayarlayarak da çalışır:
someChosenTheme = PreferenceManager.getDefaultSharedPreferences(this).getString("themePreference", "theme_twilight");
setTheme(someOtherChosenTheme);
Ancak bu karışık görünüyor ve tüm uygulama için temayı tek bir yere yerleştirmeyi tercih ediyorum. İlk düşüncem benim ana faaliyet lansmanları en kısa sürede uygulama bağlamı kapmak için oldu ve orada yapın: anlayabilirim iyi olarak
getApplicationContext().setTheme(R.style.theme_dummy);
, this hile yapmak gerektiğini, ama aslında hiçbir şey yapmıyor - tüm uygulamanın varsayılan Android stili vardır. Yukarıdaki geçerli ve eğer öyleyse, başka bir şey yapamıyorum?
Önemliyse API düzey 3'te çalışıyorum. Doğru yönde prodüksiyonlar büyük beğeni topladı!
:
Ayrıca, bu öğretici kontrol edin. Hala ideal değildir, çünkü birden fazla kalıtım yoktur, örn. Özel bir ListActivity için, ancak rahatsızlık küçüktür. Çok yararlı öğretici, zaten okudum bile :) – Cheezmeister
Ben her uygulamada bir BaseListActivity ve bir Base (Jenerik) Aktivitesi var. BaseListActivity, yerleşik CRUD (okuma, ekleme, düzenleme, silme) işlemlerinin ortak bir uygulamasına sahiptir, bu nedenle yeni bir liste etkinliği oluşturmak ve birkaç yöntemi geçersiz kılmak çok kolaydır. Tabii ki, bir MapActivity veya TabActivity eklerseniz, onlar için de bir BaseXActivity oluşturmanız gerekir. Bazen çok kalıtım daha iyidir :) – peter3
Bu yüzden her aktivite için setTheme eklenmesi, "setContentView" çağrılmadan önce gerçekten doğru çözümdür? Tek bir sistem çözümü yok mu? Ayrıca, zaten canlı olan tüm aktivitelerde ne olur? –