Android 尝试在listview中滑动delete时,片段中listview项上出现空指针异常onFling
我正在尝试在ListView项目上滑动删除 onFling(MotionEvent e1、MotionEvent e2、float velocityX、float velocityY),iam在摆动时在MotionEvent e1处变为null 请先帮我,谢谢Android 尝试在listview中滑动delete时,片段中listview项上出现空指针异常onFling,android,android-listview,ontouchlistener,Android,Android Listview,Ontouchlistener,我正在尝试在ListView项目上滑动删除 onFling(MotionEvent e1、MotionEvent e2、float velocityX、float velocityY),iam在摆动时在MotionEvent e1处变为null 请先帮我,谢谢 @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
Log.e(THIS_FILE, "======onFling "+REL_SWIPE_MAX_OFF_PATH+" , "+e1+" , "+e2);
if (Math.abs(e1.getY() - e2.getY()) > REL_SWIPE_MAX_OFF_PATH)
return false;
if (e1.getX() - e2.getX() > REL_SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > REL_SWIPE_THRESHOLD_VELOCITY) {
int pos = getListView()
.pointToPosition((int) e1.getX(), (int) e2.getY());
if (pos >= 0 && temp_position == pos)
getSwipeItem(false, pos);
} else if (e2.getX() - e1.getX() > REL_SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > REL_SWIPE_THRESHOLD_VELOCITY) {
int pos = getListView()
.pointToPosition((int) e1.getX(), (int) e2.getY());
if (pos >= 0 && temp_position == pos)
getSwipeItem(true, pos);
}
return false;
}
这是我的日志
09-05 14:41:45.086: E/DialerFragment(31827): ======onFling 333 , null , MotionEvent { action=ACTION_UP, id[0]=0, x[0]=390.39392, y[0]=154.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=197101507, downTime=197101342, deviceId=2, source=0x1002 }
09-05 14:41:45.086: E/InputEventReceiver(31827): Exception dispatching input event.
09-05 14:41:45.086: E/MessageQueue-JNI(31827): Exception in MessageQueue callback: handleReceiveCallback
09-05 14:41:45.116: E/MessageQueue-JNI(31827): java.lang.NullPointerException
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at net.telivo.fiestacancun.ui.tablet.DialerFragment$MyGestureDetector.onFling(DialerFragment.java: 1660)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.GestureDetector.onTouchEvent(GestureDetector.java:609)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at net.telivo.fiestacancun.ui.tablet.DialerFragment$12.onTouch(DialerFragment.java:967)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.View.dispatchTouchEvent(View.java:7379)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2203)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1938)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1952)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1966)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1418)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.app.Activity.dispatchTouchEvent(Activity.java:2424)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1914)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.View.dispatchPointerEvent(View.java:7564)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3883)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3778)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3483)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3406)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3540)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3406)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5419)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5399)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5370)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5493)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:182)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.os.MessageQueue.nativePollOnce(Native Method)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.os.MessageQueue.next(MessageQueue.java:132)
09-05 14:41:45.116: E/MessageQueue-JNI(31827): at android.os.Looper.l
09-05 14:41:45.116: D/AndroidRuntime(31827): Shutting down VM
09-05 14:41:45.116: W/dalvikvm(31827): threadid=1: thread exiting with uncaught exception (group=0x4184c700)
您的日志显示e1为空且
historySize=0
,因此它只有一个事件要报告。您需要添加一个空检查以确保两个事件都存在
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
Log.e(THIS_FILE, "======onFling "+REL_SWIPE_MAX_OFF_PATH+" , "+e1+" , "+e2);
if (e1 == null || e2 == null) {
return false; // If it still gives you trouble return true
}
if (Math.abs(e1.getY() - e2.getY()) > REL_SWIPE_MAX_OFF_PATH)
return false;
if (e1.getX() - e2.getX() > REL_SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > REL_SWIPE_THRESHOLD_VELOCITY) {
int pos = getListView()
.pointToPosition((int) e1.getX(), (int) e2.getY());
if (pos >= 0 && temp_position == pos)
getSwipeItem(false, pos);
} else if (e2.getX() - e1.getX() > REL_SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > REL_SWIPE_THRESHOLD_VELOCITY) {
int pos = getListView()
.pointToPosition((int) e1.getX(), (int) e2.getY());
if (pos >= 0 && temp_position == pos)
getSwipeItem(true, pos);
}
return false;
}
您的日志显示e1为空且
historySize=0
,因此它只有一个事件要报告。您需要添加一个空检查以确保两个事件都存在
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
Log.e(THIS_FILE, "======onFling "+REL_SWIPE_MAX_OFF_PATH+" , "+e1+" , "+e2);
if (e1 == null || e2 == null) {
return false; // If it still gives you trouble return true
}
if (Math.abs(e1.getY() - e2.getY()) > REL_SWIPE_MAX_OFF_PATH)
return false;
if (e1.getX() - e2.getX() > REL_SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > REL_SWIPE_THRESHOLD_VELOCITY) {
int pos = getListView()
.pointToPosition((int) e1.getX(), (int) e2.getY());
if (pos >= 0 && temp_position == pos)
getSwipeItem(false, pos);
} else if (e2.getX() - e1.getX() > REL_SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > REL_SWIPE_THRESHOLD_VELOCITY) {
int pos = getListView()
.pointToPosition((int) e1.getX(), (int) e2.getY());
if (pos >= 0 && temp_position == pos)
getSwipeItem(true, pos);
}
return false;
}
如果您想使用滑动删除功能,为什么不使用像这样的预制库呢?如果您想使用滑动删除功能,你为什么不使用像这样的预制库呢?我在使用MyGestureDetector类扩展SimpleOnGestureListener我在使用MyGestureDetector类扩展SimpleOnGestureListener每次我得到null时,如何在每次我得到null时向前移动,如何向前移动谢谢你的回复,刷卡不是随意发生的。也就是说,如果我刷了10次,它会出现2到3次。请看我的问题-----在你的第一个链接之后,它会在其他项目中工作。但在这个项目中,它不起作用。银行拒绝回复,刷卡也不会随意发生。也就是说,如果我刷了10次,它会出现2到3次。请看我的问题-----在你的第一个链接之后,它会在其他项目中工作。但在这个项目中,它不起作用