Предположим, у меня есть несколько десятков массивов с одинаковым названием, но разными цифрами в конце. Нужно сделать так, чтобы программа могла произвольно вызывать их, а имя массива не было строго предопределено в коде.
String[] currentarray;
int resId, current;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
current = 1;
String chastring = "R.array.chapter" + current;
resId = getResources().getIdentifier(chastring, "array" , getPackageName());
method();
...
public void method() {
currentarray = getResources().getStringArray(R.array.chapter1); // если написать имя массива обычным путём, то всё работает
Если же попытаться использовать resId: currentarray = getResources().getStringArray(resId);
, то ловим краш: android.content.res.Resources$NotFoundException: String array resource ID #0x0
String[] currentarray;
int resId, current;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
current = 1;
String chastring = "R.array.chapter" + current;
resId = getResources().getIdentifier(chastring, "array" , getPackageName());
method();
...
public void method() {
currentarray = getResources().getStringArray(R.array.chapter1); // если написать имя массива обычным путём, то всё работает
Если же попытаться использовать resId: currentarray = getResources().getStringArray(resId);
, то ловим краш: android.content.res.Resources$NotFoundException: String array resource ID #0x0