1
我们是否可以覆盖android.content.Resources
类,以便从应用程序中的任何位置调用getResources()
指向重写的自定义Resources对象?Android - 覆盖android.content.Resources类
我们是否可以覆盖android.content.Resources
类,以便从应用程序中的任何位置调用getResources()
指向重写的自定义Resources对象?Android - 覆盖android.content.Resources类
您可以使用ContextWrapper
并覆盖其getResources()
方法来返回您的自定义资源实现。
例如,你可以做这样的事情在你的活动:
@Override
public void onCreate(Bundle savedInstanceState) {
Context wrappedContext = new MyContextWrapper(this);
View v = LayoutInflater.from(wrappedContext).inflate(R.layout.activity_main);
setContentView(v);
}
这工作,但它不会自动“从应用程序的任何地方”,你必须手动通过适当的包装,只要你调用一个需要Context
参数的东西。
Application
类本身延伸ContextWrapper
,因此也有一个getResources()
方法。如果您在自定义Application
类中覆盖该类并在AndroidManifest.xml中进行设置,那么任何调用context.getApplicationContext().getResources()
的东西都将获得自定义实现。
这不完全是我想要做的,但它解决了问题的主要部分。我可以使用此解决方案来构建更好的解决方案。 –