Java android getResources (). getIdentifier ()

Как получить значение int id из R. для идентификатора? Когда я используюgetIdentifier его просто возвращается.0

 int i = getArguments().getInt(SELECTION_NUMBER);
 String drawerSelection = getResources().getStringArray(R.array.drawerSelection_array)[i];

int panelId = this.getResources().getIdentifier(drawerSelection.toLowerCase(),"id",getActivity().getPackageName());

редактировать

Xml







журнал

06-10 21:24:30.372: I/System.out(3572): Selection = Bus_Schedules
06-10 21:24:30.372: I/System.out(3572): panelId = 0

R.java

    public static final class id {
    public static final int Bus_Schedules=0x7f090004;
    public static final int basemenu=0x7f090005;
    public static final int content_frame=0x7f090001;
    public static final int drawer_layout=0x7f090000;
    public static final int left_drawer=0x7f090002;
 Ted Hopp31 мая 2013 г., 18:41
Когда он возвращает 0, это означает, что идентификатор не был найден. Какие'S значениеdrawerSelection? Подтвердили ли вы, что у вас есть идентификатор, определенный с этим именем?
 Ted Hopp11 июн. 2013 г., 06:16
Вам необходимо опубликовать дополнительную информацию о проблеме, чтобы получить лучший ответ. Используйте отладчик (или оператор журнала), чтобы точно определить, какое значениеdrawerSelection есть. Разместите соответствующий xml, который определяет соответствующий идентификатор как ресурс. (Кстати, вы можете опустить аргумент локали по умолчанию в вызовеtoLowerCase; тот'с тем, что он будет использовать в любом случае, и это просто загромождает ваш код.)

Ответы на вопрос(3)

Решение Вопроса

что вы конвертируетеdrawerSelection в нижнем регистре. Как ясно из файла R.java, регистр идентификатора сохраняется. Попробуйте позвонить:

int panelId = this.getResources().getIdentifier(drawerSelection,"id",getActivity().getPackageName());

Попробуйте этот метод.

public static int getResId(String fieldName, Context context, Class<!--?--> c) {

    try {
        Field field= c.getDeclaredField(fieldName);
        return field.getInt(field);
    } catch (Exception e) {
        return 0;
    } 
}

призвание

 //edtUserName is my field id
 getResId("edtUserName", context, id.class);
 Spik33001 июн. 2013 г., 07:02
и он не может понять, какой контекст в этом утверждении.
 box09 июн. 2016 г., 10:11
Ты недаже используя контекст в этом методе. Вы должны использовать getIdentifier ()
 Adnan02 июн. 2013 г., 12:59
Контекст - это базовый контекст вашего приложения. Просто получите это as- getApplicationContext ();
 Spik33001 июн. 2013 г., 06:35
я не использую контекст я использую LayoutInflater и ViewGroup

int id = getResources().getIdentifier("resourcename", "drawable", getPackageName());

getResources возвращается.int

Проверка обновленияR.array.drawerSelection_array включить только ID 'с существующих элементов.

 Ted Hopp31 мая 2013 г., 18:44
Это неТ ответить на вопрос. Он также возвращает int для OP. Проблема для OP в том, что int равен 0.
 sud00719 авг. 2017 г., 14:15
Просто добавьте нарисованное имя безR.drawable.
 David Jashi31 мая 2013 г., 18:48
Спасибо яЯ отредактирую мой ответ.
 Spik33011 июн. 2013 г., 03:39
ОБНОВЛЕНИЕ: Проверьте R.array.drawerSelection_array, чтобы включить только ID 'с существующих элементов. "  ??????

Ваш ответ на вопрос