Трассировка стека Android не упоминает мой код - PullRequest
2 голосов
/ 18 марта 2012

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

java.lang.NullPointerException
at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
at android.widget.AbsListView.obtainView(AbsListView.java:1315)
at android.widget.ListView.makeAndAddView(ListView.java:1727)
at android.widget.ListView.fillDown(ListView.java:652)
at android.widget.ListView.fillSpecific(ListView.java:1284)
at android.widget.ListView.layoutChildren(ListView.java:1558)
at android.widget.AbsListView.onLayout(AbsListView.java:1147)
at android.view.View.layout(View.java:7035)
at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
at android.view.View.layout(View.java:7035)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
at android.view.View.layout(View.java:7035)
at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
at android.view.View.layout(View.java:7035)
at android.view.ViewRoot.performTraversals(ViewRoot.java:1045)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)

Я обнаружил ошибку андроида? Я бы включил некоторый код, но я не знаю, какой код включить. Это может быть что угодно.

Ответы [ 4 ]

3 голосов
/ 18 марта 2012

Я обнаружил ошибку Android?

Вероятно, нет.

Это может быть что угодно.

Нет,это не может.Трассировка стека указывает на проблему в ArrayAdapter.Либо вы создаете ArrayAdapter, у которого есть проблема, либо вы создаете что-то еще (например, AlertDialog), которое само создает ArrayAdapter.В вашем коде может быть так много мест, где это происходит, и, вероятно, есть существенные части вашего кода, которые не имеют ничего общего с ArrayAdapter.

Далее, вы можете видеть, что исключение происходит в createViewFromResource().Только из имени метода и исключения, скорее всего, возникла наиболее вероятная проблема: вы указали неверный идентификатор ресурса макета в конструкторе ArrayAdapter.

Обратите внимание, что «неверный идентификатор ресурса макета» может быть не вашей ошибкой.Всякий раз, когда вы сталкиваетесь с ошибкой, связанной с ресурсами в разработке Android, очистите ваш проект (Project> Clean из главного меню Eclipse или ant clean из командной строки) и попробуйте снова.Если проблема исчезнет, ​​жизнь наладится.Если проблема не устраняется, в этом случае внимательно посмотрите на ваш ArrayAdapter конструктор.

Вы можете проверить исходный код для ArrayAdapter и createViewFromResource(), если этопомогает.Ссылка указывает на самую последнюю версию этого класса, хотя вы можете использовать вкладку «Ветви», чтобы найти ту, которая соответствует любой версии Android, на которой вы работаете.Иногда, если вы работаете на оборудовании, номера строк не будут совпадать, потому что производитель устройства возился с классом, но, учитывая имя метода, вы все равно можете найти общую область, в которой находится проблема.В этом случае есть относительно немного вещей, которые могли бы разумно повысить NullPointerException, и поэтому наиболее вероятным случаем является то, что вы (или инструменты сборки) предоставили неверный идентификатор ресурса макета.

0 голосов
/ 18 марта 2012

По моему опыту, это не ошибка Android, а проблема с реализацией Android на определенном устройстве. У меня была похожая проблема, которую я выложил на SO давным-давно - Приложение вылетает в Desire HD , и там есть некоторые обсуждения, которые могут быть полезны.

Тем не менее, предположим, что все устройства должным образом проверены. Помимо аппаратных проблем (камера / датчики), почти ни одно устройство не может выйти из строя по причинам, отличным от того, что что-то не так с вашим кодом.

Также будьте очень осторожны при копировании кода из Интернета!

0 голосов
/ 18 марта 2012

В зависимости от вашей IDE, вы можете использовать отладчик Eclipse / Intellij IDEA, чтобы отследить код и точно определить, где в вашей Деятельности происходит сбой.

0 голосов
/ 18 марта 2012

Я получил такие исключения, когда у меня были проблемы с XML-файлами (макеты или манифест). Это произошло во время запуска приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...