Галерея onItemClick и onTouchEvent не работают вместе с версии для Android версии 3.0

У меня есть Галерея, в которой есть OnItemSelectedListener и OnItemClickListener. Поэтому я могу перемещаться между картинками, и если я нажму на один, произойдет что-то еще (в зависимости от того, на что я нажал). Он работал отлично до версии 3.0, но оттуда (3.0-4.0) после того, как он обрабатывает событие onItemClick, возникает фатальное исключение:

12-07 18:46:03.008: E/AndroidRuntime(935): FATAL EXCEPTION: main 12-07 18:46:03.008: E/AndroidRuntime(935): java.lang.NullPointerException 12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.GestureDetector.onTouchEvent(GestureDetector.java:587) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.widget.Gallery.onTouchEvent(Gallery.java:937) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.View.dispatchTouchEvent(View.java:5462) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1947) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1708) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1953) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1722) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1953) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1722) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1953) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1722) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1953) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1722) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1953) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1722) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1953) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1722) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1953) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1722) 12-07 18:46:03.008: E/AndroidRuntime(935): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1882) 12-07 18:46:03.008: E/AndroidRuntime(935): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1361) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.app.Activity.dispatchTouchEvent(Activity.java:2364) 12-07 18:46:03.008: E/AndroidRuntime(935): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1830) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.View.dispatchPointerEvent(View.java:5638) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:2827) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2406) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.os.Handler.dispatchMessage(Handler.java:99) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.os.Looper.loop(Looper.java:137) 12-07 18:46:03.008: E/AndroidRuntime(935): at android.app.ActivityThread.main(ActivityThread.java:4340) 12-07 18:46:03.008: E/AndroidRuntime(935): at java.lang.reflect.Method.invokeNative(Native Method) 12-07 18:46:03.008: E/AndroidRuntime(935): at java.lang.reflect.Method.invoke(Method.java:511) 12-07 18:46:03.008: E/AndroidRuntime(935): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 12-07 18:46:03.008: E/AndroidRuntime(935): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 12-07 18:46:03.008: E/AndroidRuntime(935): at dalvik.system.NativeStart.main(Native Method) 

У меня такая же проблема. Я начал работу с onItemClick, и это привело к сбою приложения.

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

Я реализовал «обработчик», и он отлично работает.

Создайте обработчик как глобальную переменную:

 private Handler handler; 

Установите обработчик внутри onCreate так, чтобы он находился в основном потоке:

 handler = new Handler(); 

Создайте сообщение для обработчика в onItemClick, мой выглядит следующим образом:

 handler.post(new Runnable() { @Override public void run() { // Do what ever... } }); 

Я также получил NPE в onTouchEvent() : 587. Поэтому я начал использовать GestureDetectorCompat из библиотеки поддержки, и он отлично работает.

Intereting Posts
Использование библиотеки Closure в приложении Phonegap (Android) Softkeyboard в ландшафтном режиме не появляется в эмуляторе Android Как иметь открытые ссылки для веб-просмотра Android, которые являются целевыми «_blank» в iframe Почему для удаления rawQuery требуется moveToFirst, чтобы фактически удалить строки? Воспроизведение видео из файловой системы Chrome, не работающей на Android Какой лучше дизайн пакета? Несколько прямоугольников, не нарисованных на холсте Получите реальное разрешение экрана на сэндвич с мороженым Создание приложения в Android-источнике компилируется в систему / приложение вместо данных / приложений? Ключ зависимости зависимостей Gitlab CI Чтение ответа HttpPost Панель инструментов, не появляющаяся в предустановленных устройствах Android и MJPEG 5.1 как возвышение Тень под видом с использованием метода onDraw Вычислить скорость с помощью GPS в Android