Я постараюсь быть конкретным, если смогу - пожалуйста, наберитесь терпения, спросите впервые и сравнительно плохо знакомы с программированием на этой платформе. Извиняюсь, если об этом спрашивали / отвечали раньше - пожалуйста, свяжите это со мной. Я искал вверх и вниз, но нашел другие не связанные (по крайней мере для меня) проблемы.
Настоящая загадка для меня заключается в том, что мое приложение падает на моем эмуляторе, но при установке на моем телефоне (через загрузку apk на телефон, а затем с помощью приложения AppInstaller с маркета) оно работает.
Сбой происходит из-за исключения NullPointerException в пронумерованной строке в следующем фрагменте кода (мой код) настраиваемого адаптера курсора списка.
// TaskListCursorAdapter.java
@Override
public void bindView(View view, Context context, Cursor cursor) {
super.bindView(view, context, cursor); // <<< LINE 36
// DO OTHER BINDING OF STRINGS TO TEXT VIEWS ETC
Создан следующий дамп ошибки.
08-23 21:58:57.251: ERROR/AndroidRuntime(346): Uncaught handler: thread main exiting due to uncaught exception
08-23 21:58:57.411: ERROR/AndroidRuntime(346): java.lang.NullPointerException
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.widget.SimpleCursorAdapter.bindView(SimpleCursorAdapter.java:149)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at adriaansapps.com.tasks.TaskListCursorAdapter.bindView(TaskListCursorAdapter.java:36)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at adriaansapps.com.tasks.TaskListCursorAdapter.newView(TaskListCursorAdapter.java:83)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.widget.CursorAdapter.getView(CursorAdapter.java:182)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.widget.AbsListView.obtainView(AbsListView.java:1274)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.widget.ListView.measureHeightOfChildren(ListView.java:1147)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.widget.ListView.onMeasure(ListView.java:1060)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.view.View.measure(View.java:7964)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:619)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.widget.LinearLayout.onMeasure(LinearLayout.java:280)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.view.View.measure(View.java:7964)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:569)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:361)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.view.View.measure(View.java:7964)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.view.View.measure(View.java:7964)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.widget.LinearLayout.measureVertical(LinearLayout.java:464)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.view.View.measure(View.java:7964)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.view.View.measure(View.java:7964)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.view.ViewRoot.performTraversals(ViewRoot.java:763)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.os.Handler.dispatchMessage(Handler.java:99)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.os.Looper.loop(Looper.java:123)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at android.app.ActivityThread.main(ActivityThread.java:4363)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at java.lang.reflect.Method.invokeNative(Native Method)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at java.lang.reflect.Method.invoke(Method.java:521)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
08-23 21:58:57.411: ERROR/AndroidRuntime(346): at dalvik.system.NativeStart.main(Native Method)
Любопытно, что я с радостью программировал и отлаживал весь день, и неожиданно длинная рабочая и свободная от ошибок часть моего приложения теперь выдает эту ошибку.
Я подозреваю, что это может быть проблема с базами данных, но на самом деле не уверен - там нет ничего неуместного. До сегодняшнего дня у меня была база данных только с одной таблицей - сегодня я добавил новую таблицу, в которой также есть поле «_id» в качестве поля ключа автоинкремента имени, которое, как я прочитал в документации, было необходимо для адаптеров списка Android (если память служит) , Имея некоторый опыт в кодировании и небольшой опыт работы с базами данных, это кажется мне плохой идеей, но я не уверен, является ли это проблемой и / или как еще это сделать.
Сбой, который я перечисляю здесь, не отображает и не ссылается на данные в другой новой таблице. Курсор не содержит никаких данных запроса. Фактически, если я переименую поле ключа «_id» новой таблицы во что-то другое (например, «_blah»), аварийное завершение останется.
Как я уже сказал, если я загружаю apk на свой телефон, он работает.
Я пробовал на эмуляторе следующее:
- перезапуск АБР (и затмение) - безрезультатно
- удалить из эмулятора - нет результата
- профиль AVD Destory и воссоздать - без результата
Я занимаюсь разработкой этого пакета под Android 2.1 SDK и работаю последние несколько недель. У меня только что был установлен этот SDK, я еще не обновился до 2.2.
Не уверен, что еще я могу сказать здесь - надеясь, что у кого-то здесь достаточно опыта, чтобы пролить на него свет.
Без исправления я могу ожидать очень медленный процесс разработки здесь (при условии, что мне нужно загрузить на свой телефон, чтобы проверить новые изменения кода ...).
Извините за то, что долго думал - надеюсь, я предоставляю достаточно информации для одного из вас, умных людей, чтобы понять это. Спасибо