У меня возникла странная проблема с использованием findViewById (id). Он возвращается с ресурсом, который не найден, хотя ресурс определенно существует. Это текстовое представление в макете рядом с другим текстовым просмотром, одно из текстовых просмотров, которое я могу найти по id, а другое показывает, что ресурс не найден. Есть ли причина, по которой это может произойти?
Исходный ресурс Android не найден?
Ответ 1
Попробуйте выполнить очистку своего проекта или отправьте код.
Иногда идентификатор не восстанавливается правильно, если вы используете Eclipse. Это требует, чтобы проект был очищен и иногда обновлялся.
Ответ 2
Убедитесь, что вы на самом деле не пытаетесь установить текст на число и ожидаете, что он автоматически преобразуется в строку.
Ответ 3
Сообщение об исключении не очень описательно. Скорее всего, случай, когда вы пытаетесь применить значение int к Строке, применяя приведенное ниже изменение, исправил проблему для меня.
Код перед исправлением:
itemPrice.setText(foodMenuItems.get(position).getItemPrice());
Код после исправления:
itemPrice.setText(Integer.toString(foodMenuItems.get(position).getItemPrice()));
Ответ 4
textViewCount.setText(someArray.size());
была моей проблемой.
Просто позвоните toString();
, чтобы устранить проблему.
Integer size = mSomeArray.size();
textViewReplyCount.setText(size.toString());
Ответ 5
Просто, чтобы прояснить ответ Терры Кайна, поскольку я видел, как это часто случается с людьми;
TextView
и другие текстовые компоненты, имеют 2 setText()
функции с 1 параметром.
Один из них имеет String
и один с int. int
, очевидно, для строки Resource, такой как R.string.myString
- которая, тем, кто не знал, R.exm
всегда представляется как int
. Строка предназначена для размещения там строки.
Так, например, я хочу поместить int x = 1;
в textView. Выполнение mTextView.setText(x);
приведет к тому, что textView будет использовать функцию ресурса, и поскольку, вероятно, нет ресурса с идентификатором 1, он будет генерировать исключение. Ресурс не найден.
Если вы хотите поместить int или любое число в функцию setText(), обязательно преобразуйте его в String
(x+"")
или (x.toString())
, чтобы сделать трюк для вас.
Надеюсь, это сэкономило некоторое время людям.
Ответ 6
Убедитесь, что программные атрибуты, которые недоступны, не заданы.
У меня была такая же проблема, и причина была в RemoteView.setFloat(id,"setWeight",1.0f);
для LinearLayout
, которая не поддерживалась Android до 4.x
К сожалению, сообщение об ошибке было не очень полезно для этого.