如何在Android中创建上下文?ContextThemeWrapper的目的是什么?

ora*_*ako 15 android android-context

我正在帮助整理这个页面:什么是背景?

为了帮助说明组件与a的关系Context,我通过查看框架源代码创建了这个图:

上下文子类

在挖了一下之后,我有以下问题:

  1. 什么创建了Context什么以及使用了哪些具体类?Context类本身是一个抽象类,它几乎需要实现所有方法.并且ContextWrapper,在实例化时,需要将Context实例作为其基本上下文传入,因此必须至少有一个具体Context类.
  2. 我知道ContextWrapper它及其子类利用包装器/装饰器模式Context根据需要向基类添加功能. 这是什么目的ContextThemeWrapper 它覆盖了一些方法,但如果它包装了一个基础Context,为什么不直接将调用委托给基础Context?例如,Activity类扩展ContextThemeWrapper,它为getTheme()和提供特定的实现setTheme().为什么?

Android开发人员java文档有点模糊.例如,ContextWrapper

Bla*_*der 6

回答#2:

ContextThemeWrapper将上下文支持添加到上下文中,否则您无法将任何主题应用于您创建的视图.这就是为什么Activity布局支持主题而小部件布局不支持主题的原因.您也可以自己创建ContextThemeWrapper以使用另一个主题覆盖当前主题.