Получение строкового ресурса проекта Android из Java-файла
Я определяю много своих постоянных строк в ресурсе R.strings для моего проекта Android. Тем не менее, я хотел бы использовать их только в Java-файл. Где класс просто класс Java. Есть ли способ получить эту ссылку?
Я могу ссылаться на него, но я не могу использовать Context.getString()
метод, потому что это только файл Java.
Какие у меня варианты здесь? Должен ли я просто определить все мои постоянные строки в этом файле Java? Или я все еще могу использовать R.strings?
пример
getString(R.string.PLUS_SERVICE))
Это не работает, потому что у меня нет контекста.
Спасибо!
6 ответов
Это действительно зависит от того, что это за строки. Строковые константы слегка отличаются от строковых ресурсов. Обычно, если эти строки заканчиваются в тексте, обращенном к пользователю, вы, вероятно, захотите поместить их в строковые ресурсы. Таким образом, они могут быть легко локализованы. Если они предназначены для сообщений об исключениях и т. Д., То это не так уж важно, и они могут входить в константы.
Если вам нужно использовать ресурсы в классе без Context
нужно дать ему доступ к одному. Вы можете либо передать его в метод, который использует его в качестве аргумента, либо передать его конструктору при создании класса и сохранить его в члене.
Пытаться
Context context=getApplicationContext();
context.getString(R.string.PLUS_SERVICE);
Вы можете сделать одну вещь,
Делать Constructor
в файле Java для accept Context as parameter
лайк,
public ClassName(Context c)
{
}
И передать контекст из деятельности при создании объекта,
new ClassName(ActivityName.this);
И теперь вы можете использовать эту переменную контекста в вашем Java-файле.
Быть уверенным:
Context context=this;
Это на самом деле контекст Activity, а затем доступ к строковому ресурсу как:
String string = context.getApplicationContext().getString(R.string.string_name)
Попробуйте это например во фрагменте, используйте
getActivity().getApplicationContext().getString( R.string.resource )
Как говорили другие, ресурсы предназначены для пользовательского интерфейса. Если ваш класс, которому нужны эти строки, не имеет доступа к контексту, то они, вероятно, просто должны быть константами в этом классе. Если вам нужно принудительно установить Context в классе, вам может потребоваться переоценить ваш дизайн, потому что вы создаете функциональную библиотеку, а не OO-дизайн. Доступ к ресурсам и их использование должны естественным образом обеспечиваться хорошим OOD.