2015-02-20 2 views
0

Я Тринг, чтобы получить идентификатор изображения по имени someId = "hd_2" Resources.getSystem().getIdentifier(someId, "drawable", getPackageName());Android:. Resources.getSystem() возвращает getIdentifier java.lang.IllegalArgumentException

public static final class drawable { 
    ... 
    public static final int hd_2=0x7f020088; 
    ... 
} 

Почему это может вернуть java.lang. IllegalArgumentException: Неверный метод?

обновление:

я переехал Resources.getSystem().getIdentifier из OnCreate в OnStart, теперь она возвращает 0.

ответ

1

Из documentation на Resources.getSystem():

Вернуться глобальный общий объект ресурсов, который обеспечивает доступ только системные ресурсы (без ресурсов приложения) и не настроен для текущего экрана (не может использовать единицы измерения, не изменяется в зависимости от ориентации и т. д.).

Вы ищете неправильный адрес Resources. Вам нужно получить экземпляр с вашего текущего Context. Что-то вроде:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Resources res = getResources(); 
    int resId = res.getIdentifier(someId, "drawable", getPackageName()); 
}