Как переопределить getResources в Activity - PullRequest
2 голосов
/ 31 июля 2011

Я пытался расширить 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);

1 Ответ

4 голосов
/ 31 июля 2011

я решил:

@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), но не работал: (

...