Intereting Posts
Необязательный метод в интерфейсе Java Как очистить уведомления с помощью оболочки ADB Почему иногда сохраняется сохранение Hashtable объектов, не являющихся объектами в onSaveInstanceState ()? Как правильно обрабатывать вращение экрана с помощью ViewPager и вложенных фрагментов? Установите фиксированную высоту строки GridView Начало работы с OpenGL … на Android Очистить задний стек с помощью фрагментов Не удается запустить на производственных устройствах Соответствующий аудиоформат для звуковых эффектов на телефонах Android относительно эффективности Как добавить несколько видов заголовков в ListView Сбой внутри GoogleSignInAccount в последних PlayServices 8.3 Есть ли эквивалент iOS 'identifierForVendor для android? Отправить пользовательский объект с помощью встроенного Android Binder Spreadtrum (ID поставщика 1782) Проблемы Подключение к adb Только исходный поток, создавший иерархию представлений, может коснуться его представлений. На андроиде

Галерея 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) 

Solutions Collecting From Web of "Галерея onItemClick и onTouchEvent не работают вместе с версии для Android версии 3.0"

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

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

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

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

 private Handler handler; 

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

 handler = new Handler(); 

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

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

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