Android - как я должен исправить ошибку, основанную на этой трассировке исключений? - PullRequest
0 голосов
/ 02 мая 2011

В моем приложении для Android возникает ошибка, которая возникает довольно часто на основании отчета о сбое в консоли разработчика.

java.lang.NullPointerException
at android.widget.AbsListView.obtainView(AbsListView.java:1304)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1198)
at android.widget.ListView.onMeasure(ListView.java:1109)
at android.view.View.measure(View.java:8171)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:381)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
at android.view.View.measure(View.java:8171)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
at android.view.View.measure(View.java:8171)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:526)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
at android.view.View.measure(View.java:8171)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
at android.view.View.measure(View.java:8171)
at android.view.ViewRoot.performTraversals(ViewRoot.java:801)
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:878)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
at dalvik.system.NativeStart.main(Native Method)

К сожалению, я не могу воспроизвести эту ошибку на моем телефоне Android.

Я не знаю, с чего начать: в трассировке нет никаких ссылок на мой код.

Может, кто-нибудь подскажет, как определить причину проблемы?

Спасибо
Dan

Ответы [ 2 ]

3 голосов
/ 02 мая 2011

Наиболее очевидные вещи, которые я могу придумать:

  1. AbsListView.obtainView() Я полагаю, что связывается с Adopter, чтобы заполнить представление списка.Убедитесь, что никогда не было случая, чтобы вы могли вернуть нуль обратно в представление списка.

  2. В некоторых версиях платформы может быть ошибка.К сожалению, консоль разработчика в настоящее время не показывает версию платформы, с которой поступили сообщения об ошибках.Надеемся, что это будет добавлено в будущем, чтобы помочь диагностировать такую ​​ситуацию.

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

0 голосов
/ 02 мая 2011

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

Я подозреваю, что это связано с размером экрана, и вы пытаетесь нарисовать пиксель, который не существует.

...