Сбой из-за «Нет идентификатора пакета при получении значения номера ресурса …»

Хорошо после того, как я просмотрел различные темы, которые мог найти на этой теме, и пробовал все, что, казалось, работало для других … Я поддался необходимости публиковать свою собственную проблему.

Как полный noob для Android и Java, вам придется простить необходимость говорить со мной, как с ребенком 🙂

У меня есть приложение, в котором есть 3 действия. Главное окно, которое работает как экран навигации, выбирает один из двух других. Первый работает отлично, но когда я пробую кнопку номер 2 … он падает.

У меня есть код, который я пытаюсь запустить onCreate … поэтому, когда я увидел, что это часто был макет XML, который вызвал сбой. Я прокомментировал код Java … и превью макета загружается нормально.

Снова вернув код, он снова сработает.

Глядя в LogCat, я вижу строку, которая говорит «Нет идентификатора пакета при получении значения для номера ресурса 0x0000000d»

Затем всевозможные строки о фатальных исключениях и закрытии виртуальной машины.

Итак, получая уверенность от других сообщений, я пошел в файл R.java, чтобы узнать, какой ресурс имеет этот идентификатор … и его там нет. Они ВСЕ начинаются с 0x7f … теперь ТОЛЬКО один, который заканчивается на «d», представляет собой текстовое изображение с идентификатором «game_Answer1». Но я не уверен, что это то, к чему это относится.

Я попробовал команду Eclipse clean, а также удалил проблему R.java ….

Ниже приведен код java, который, кажется, разбивается … снова, держите смех в моем коде спагетти, поскольку это попытка № 2 в Java за пределами приветствия мирового приложения!


import android.app.Activity; import android.os.Bundle; import android.widget.TextView; import java.util.Random; public class playgame extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gamelayout); //set up first question genQuestion(); } Random generator = new Random(); public void genQuestion() { int i = generator.nextInt(25); int correct = generator.nextInt(2)+1; TextView g_answera = (TextView) findViewById(R.id.game_Answer1); TextView g_answerb = (TextView) findViewById(R.id.game_Answer2); TextView g_answerc = (TextView) findViewById(R.id.game_Answer3); g_answera.setText("-"); g_answerb.setText("-"); g_answerc.setText("-"); if(correct==1){ g_answera.setText("!"); } if(correct==2){ g_answerb.setText("!"); } if(correct==3){ g_answerc.setText("!"); } } 

Ниже приведен формат XML, связанный с этой проблемой … на случай, если я пропущу что-то очевидное:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffff" android:id="@+id/gamelayoutwrapper"> <RelativeLayout android:layout_height="wrap_content" android:id="@+id/games_animalnameFrame" android:layout_width="fill_parent" android:gravity="right"> <TextView android:layout_height="wrap_content" android:id="@+id/game_animalname" android:layout_width="fill_parent" android:textSize="60sp" android:layout_alignParentRight="true" android:gravity="right" android:text="__nteater"></TextView> </RelativeLayout> <RelativeLayout android:layout_width="wrap_content" android:id="@+id/game_animalimageFrame" android:layout_below="@+id/games_animalnameFrame" android:layout_centerInParent="true" android:layout_height="wrap_content" android:gravity="top"> <ImageView android:id="@+id/game_animalImage" android:src="@drawable/elephant" android:scaleType="fitCenter" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingBottom="10dp"></ImageView> </RelativeLayout> <RelativeLayout android:layout_height="wrap_content" android:id="@+id/gameLettersFrame" android:layout_alignParentBottom="true" android:layout_width="fill_parent" android:layout_centerHorizontal="true" android:background="#cccccc"> <TextView android:layout_height="wrap_content" android:id="@+id/game_Answer1" android:text="A" android:paddingLeft="20dp" android:paddingRight="20dp" android:layout_gravity="left" android:clickable="true" android:textSize="100sp" android:layout_width="wrap_content" android:layout_alignParentLeft="true" android:textColor="#090999" android:background="#ccccFF"></TextView> <TextView android:layout_height="wrap_content" android:id="@+id/game_Answer2" android:text="B" android:paddingLeft="20dp" android:paddingRight="20dp" android:layout_gravity="center_horizontal" android:clickable="true" android:textSize="100sp" android:layout_width="wrap_content" android:layout_centerInParent="true" android:textColor="#090999" android:background="#ffcccc"></TextView> <TextView android:layout_height="wrap_content" android:id="@+id/game_Answer3" android:text="C" android:paddingLeft="20dp" android:paddingRight="20dp" android:layout_gravity="right" android:clickable="true" android:textSize="100sp" android:layout_width="wrap_content" android:layout_alignParentLeft="false" android:layout_alignParentRight="true" android:textColor="#090999" android:background="#ccffcc"></TextView> </RelativeLayout> 

Solutions Collecting From Web of "Сбой из-за «Нет идентификатора пакета при получении значения номера ресурса …»"

Я столкнулся с этой проблемой еще некоторое время назад, я предполагаю, что она исправлена, но я полагал, что альтернативный ответ всегда приветствуется 🙂 При использовании метода setText () вы НЕ МОЖЕТЕ отправлять примитивные типы данных, такие как int и double, а скорее конвертировать в И затем отправить строку. Это устранило мою проблему, когда она всплыла

Android не разрешает имена ресурсов верхнего регистра

переименовывать

R.id.game_Answer1

в

game_answer_one

И т. Д. Для другого у вас есть

Я хотел посмотреть имя ID для LinearLayout, чтобы убедиться, что я получаю правильный код в своем коде. Эта ошибка для меня произошла из-за того, что я забыл добавить android: id = "@ + id / myid" в один из моих файлов макета XML (потому что этот файл не был в центре моего внимания в этот момент!)

В вашем файле R.java, существует ли id для gamelayout? Это должно быть расположено в public static final class layout { } в файле R? Это первый важный шаг в определении причины сбоя приложения.

Android (к сожалению) не принимает идентификаторы ресурсов с прописными буквами. Кроме того, убедитесь, что вы определяете пространство имен в корневом представлении.

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/game_answer1" android:text="A" android:paddingLeft="20dp" android:paddingRight="20dp" android:layout_gravity="left" android:clickable="true" android:textSize="100sp" android:layout_alignParentLeft="true" android:textColor="#090999" android:background="#ccccFF" /> </RelativeLayout> 

Могут возникнуть другие ошибки в вашем проекте, из-за которых ваш R.java не создается хорошо. Поэтому при выполнении он не получает ресурс с этим id. R.id содержит идентификатор всех ресурсов ваших проектов.

Уже поздно ответить, хотя может быть полезно для тех, кто найдет эту нить через поиск.

Метод setText требует идентификатора в качестве аргумента. Таким образом, в значениях / strings.xml должна быть строка с именем типа «empty_answer», содержащим значение «-». Другими словами, строка вроде: –

Затем setText следует вызывать как: g_answera.setText (R.string.empty_answer);

Возможно, что происходит в вашем случае, так это то, что строка «-» каким-то образом превратилась в идентификатор ресурса 0x0000000d, который, конечно, не существует в вашем приложении. Хотя странно, что такой код был скомпилирован.

Еще один комментарий: в Android ВОЗМОЖНО назвать ресурсы, такие как идентификаторы с символами «Капитал». Что НЕ возможно – иметь ключи капитала в ИМЯ файлов ресурсов.