2015-07-16 5 views
13

: kazma sonraAndroid'de içerik nasıl oluşturulur? ContextThemeWrapper'ın amacı nedir? Ben birlikte bu sayfayı koymak yardım ediyorum

Context Subclasses

: What is a context?

bileşenleri Context ilgili nasıl çalıştığını göstermek yardımcı olmak amacıyla, çerçeve kaynak kodunu gözden gelen bu diyagram yarattı

  1. bir Context ve hangi concr yaratır ne: biraz etrafına, aşağıdaki sorular vardı ete sınıfları kullanılıyor? Temel Context sınıfının kendisi, hemen hemen tüm yöntemlerinin uygulanmasını gerektiren soyut bir sınıftır. Ve bir ContextWrapper, başlatıldığında, temel bağlam olarak geçirilecek bir Context örneğini gerektirir, bu nedenle en az bir beton Context sınıfı olmalıdır.
  2. ContextWrapper ve alt sınıflarının, gerektiğinde taban Context sınıfına işlevsellik eklemek için sarıcı/dekoratör kalıbını kullandığını anlıyorum. ContextThemeWrapper Amacı nedir? Birkaç yöntem geçersiz kılar, ancak bir Context tabanı sarılıyorsa, neden çağrıları yalnızca Context tabanına delege etmiyorsunuz? Örneğin, Activity sınıfı, getTheme() ve setTheme() için özel bir uygulama sağlayan ContextThemeWrapper öğesini genişletir. Niye ya?

Android geliştirici java belgeleri biraz belirsiz. Aksi oluşturduğunuz Views'a herhangi tema uygulamak edemez,

ContextThemeWrapper bir Bağlamında için tema desteği ekler: Ör ContextWrapper

+0

Aslında bir uygulamaya adım atmayı başardım ve “Activity” ve “Application” nin “mBaseContext” olarak kullanıldığı somut sınıfı buldum. 'ContextImpl'. https://github.com/android/platform_frameworks_base/blob/master/core/java/android/app/ContextImpl.java – orangemako

cevap

6

2. cevaplama. Bu nedenle, etkinlik düzenleri, tema düzenlerini değil, temaları desteklemektedir. Mevcut temayı bir başkasıyla geçersiz kılmak için bir ContextThemeWrapper da oluşturabilirsiniz.

+0

Aptal soru için özür dilerim, lütfen Aktivite düzeni ve Widget düzeni nedir? – CopsOnRoad