Intereting Posts
Получить адрес электронной почты и номер телефона, на котором используется метка типа android Удержание браузера и возврат к правильной активности (закрытие открытой вкладки) Использование HTC Wildfire для разработки Android Android – при выходе из WebView звук все еще продолжает воспроизводиться Ошибка приложения при попытке использовать RecyclerView на Android 5.0 Adb не удалось подключиться к Android-x86 в VirtualBox сегодня RecyclerView java.lang.IndexOutOfBoundsException: обнаружена несогласованность. Недопустимая позиция позиции при возобновлении добавления фрагмента Android отключить Клавиша ввода на мягкой клавиатуре Изменения кода не отражены в .apk Как использовать Smack 4.1 в Android? Почему моя служба не работает в Android? (Я просто хочу, чтобы что-то регистрировалось каждые 5 секунд) Android: привязка данных из базы данных к CheckBox в ListView? Создание Android от источника – эмулятора и AVD Сбой телефонной камеры при извлечении данных Не удается разрешить метод getMap ()

Использование Android getIdentifier ()

Я пробовал это:

r = Resources.getSystem().getIdentifier("ball_red","drawable","com.Juggle2"); Log.i("FindBall","R = "+r); 

И это:

 r = Resources.getSystem().getIdentifier("com.Juggle2:drawable/ball_red", null, null); 

Но 'r' всегда заканчивается как ноль.

Я вызываю эту строку из вспомогательного класса, который не является Activity и не расширяет ничего, поэтому я не могу просто вызвать getResources() , но я могу передать его из моего SurfaceView .

В конце концов, я хочу заменить "ball_red" на переменную, но сначала первое. Это не работает.

com.Juggle2 – действительно мое имя пакета. drawable – папка res которой она находится, и имя файла действительно ball_red .

Р.Ява говорит:

  public static final int ball_red=0x7f020027; 

Поэтому я не уверен, почему он не работает.


Поэтому я не могу использовать ресурсы, я должен передать контекст, и я делаю так: Внутри:

 class Collection extends SurfaceView implements SurfaceHolder.Callback { 

Я создаю новый экземпляр класса и getContext() его getContext() в качестве параметра.

Solutions Collecting From Web of "Использование Android getIdentifier ()"

Поскольку вы находитесь внутри действия, достаточно написать

 int resId=YourActivity.this.getResources().getIdentifier("ball_red", "drawable", YourActivity.this.getPackageName()); 

Или если вы не вызываете его из внутреннего класса

 int resourceID = getResources().getIdentifier("ball_red", "drawable", getPackageName()); 

Заметка

 getIdentifier() Returns 0 if no such resource was found. (0 is not a valid resource ID.) 

Проверьте

Проверьте также в своем R.java, есть ли доступный с именем ball_red

например:

 public static final class drawable { public static final int ball_red=0x7f020000; } 

РЕДАКТИРОВАТЬ Если у вас нет активности, вы должны проанализировать context instead of resources as parameter затем сделать это

 int resId=context.getResources().getIdentifier("ball_red", "drawable", context.getPackageName()); 

Для пользователей Xamarin у меня возникла проблема, когда я добавил значок с заглавными и прописными буквами (например, iconVaccine.png) и имел в виду имя имени nameVaccine.

Xamarin позволит вам сделать это (даже если вы этого не сделаете), но когда приложение будет скомпилировано, имя будет сплющено до нижнего регистра, поэтому вы должны обратиться к нижнему регистру следующим образом:

Название изображения: iconVaccine.png

Справка Xamarin: iconVaccine (как создается в Resource.designer.cs, но не будет работать)

Правильный справки: iconvaccine

Надеюсь, это поможет!

Хотя ответ от Festus Tamakloe правильный, я нашел причуду в этой функции.

Если вы объявляете string-array в XML-файле, к нему следует обращаться, вызывая array базового типа ресурса, используя результаты string-array в возврате anid 0.