Как взять массив из строкового ресурса и поместить в массив String?
В Android проекте есть массив строк:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="regions_list_values">
<item>region_1</item>
<item>region_2</item>
<item>region_3</item>
<item>region_4</item>
<item>region_5</item>
<item>region_6</item>
</string-array>
</resources>
В коде Activity этот массив забираю вот так:
List<String> totalArrayList = new ArrayList<String>();
String []resurs = getResources().getStringArray(R.array.regions_list_values);
totalArrayList.addAll(Arrays.asList(resurs));
Никаких проблем. Но если создать *.java класс, эта конструкция не работает: ошибка при вызове getResources().getStringArray...
Вы можете создать свой класс Application и с помощью него передавать Context в любую точку приложения.
Выглядит это примерно так:
public class AppTest extends Application {
private static AppTest instance;
@Override
public void onCreate() {
super.onCreate();
instance = this;
}
public static Context getContext(){
return instance.getApplicationContext();
}
}
A вызов данного метода будет выглядеть так:
resurs = App.getContext().getResources().getStringArray(R.array.regions_list_values);
Помимо этого вам нужно знать, что нужно будет в Manifest.xml указать в разделе <application> имя вашего класса приложения:
<application
android:name=".AppTest"
Вы не описали, что конкретно за ошибка у вас происходит, но скорее всего метод getResources у вас оказывается не найден.
В коде Activity всё работает потому, что этот метод определен у класса, от которого Activity наследуется.
Для того, чтобы в другом классе в каком-то методе вы могли сделать тоже самое, вам нужно передать ссылку на контекст, или на саму активити, чтобы нужный метод вызывать (или сразу нужный массив).
Иначе сделать не получится.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости