Как получить доступ к строке из string.xml, когда мы находимся в классе, отличном от основного класса?
Для доступа к строке в главном классе getString()
метод работает очень хорошо. но что если мы создали другой класс и нам нужен доступ к строкам? Я старался Resources.getSystem().getString(R.string.m1);
но это не сработало и привело к падению приложения. любое предложение? благодарю вас.
4 ответа
Вы можете сделать это так:
String m1 = this.getResources().getString(R.string.m1);
Если класс является Context, используйте getResources()
, Если это не так, то вам нужно передать ему экземпляр Resources
от одного из ваших Context
s. Resources.getSystem()
возвращает объект ресурсов для системы Android, поэтому у него есть ресурсы Android, а не ваши.
Есть много способов сделать это, я скажу вам мой.
Всякий раз, когда мне нужно получить доступ к некоторому ресурсу, я передаю Context
в качестве параметра для метода.
Используя context
переменная, вы можете получить ресурсы, как это:
context.getResources().getString(R.string.my_string);
getString()
это метод Context
класс, поэтому вам нужно передать контекст (например, объект Activity) в другой класс. Чем вы можете позвонить contextObj.getString()
,
См. Документацию класса Context для получения дополнительной информации.
"Быстрое и грязное" решение может представлять собой статическую переменную Context, в которой вы можете назначить основной объект Activity во время запуска, но я не предлагаю такой способ.