android - 如何在Activity中覆盖getResources

原文 标签 android resources overriding

我已经尝试扩展了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
在com.test.testactivity.getresources上(testactivity.java:75)
它指出:
super.getWindowManager().getDefaultDisplay().getMetrics(metrics);

最佳答案

我解决了:

@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)添加一些文本:(

相关文章:

java - 发送SMS数据时未调用onReceive

java - java.lang.IllegalArgumentException:不能访问com.b.de类的默认构造函数

java - 如何使用JSP / Java检测移动(iOS和Android)?

javascript - 当我想在span标签内渲染文本时看到span标签

.net - 将大型资源文件物理上拆分为多个文件,而编译器将其视为一个文件

java - 使用equalsIgnoreCase覆盖hashCode并重写equals以检查相等性

ruby-on-rails - 覆盖控制器中的protect_from_forgery策略

android - 使用FragmentManager从活动中访问片段方法

ios - 如何为Xcode项目添加声音效果?

java - Android OnNavigationListener覆盖?