我已尝试扩展Resources
类,因此我可以覆盖getString(int id)
方法,因此可以对我String
中所需的每个Activity
执行一些效果,此处为提供一些我的代码:
public class CustomResource extends Resources {
public CustomResource(AssetManager assets, DisplayMetrics metrics, Configuration config) {
super(assets, metrics, config);
}
@Override
public String getString(int id) throws NotFoundException {
return super.getString(id) + " $$";
}
}
在我的活动中:
CustomResource customResource;
@Override
public Resources getResources() {
if (customResource == null) {
DisplayMetrics metrics = new DisplayMetrics();
super.getWindowManager().getDefaultDisplay().getMetrics(metrics);
customResource = new CustomResource(getAssets(), metrics, super.getResources().getConfiguration());
}
return customResource;
}
但Runtime
上显示错误:
引起:java.lang.NullPointerException
at com.test.TestActivity.getResources(TestActivity.java:75)
并指出:
super.getWindowManager().getDefaultDisplay().getMetrics(metrics);
答案 0 :(得分:4)
我解决了它:
@Override
public Resources getResources() {
if (customResource == null) {
customResource = new CustomResource(super.getAssets(), super.getResources().getDisplayMetrics(), super
.getResources().getConfiguration());
}
return customResource;
}
所有这一切,当我用户Strings
但没有工作时,向XML中所需的所有setContentView(R.layout.sample)
添加一些文字:(