Skip to content

Commit 5d66a49

Browse files
committed
🚧 handle cases where a touch event can be null and result in future NPE issues
Fixes Issue #21
1 parent 88c3147 commit 5d66a49

File tree

1 file changed

+30
-17
lines changed

1 file changed

+30
-17
lines changed

‎sensey/src/main/java/com/github/nisrulz/sensey/TouchTypeDetector.java

+30-17
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,17 @@ class GestureListener extends GestureDetector.SimpleOnGestureListener {
3131

3232
@Override
3333
public boolean onDoubleTap(MotionEvent e) {
34-
touchTypListener.onDoubleTap();
35-
return super.onDoubleTap(e);
34+
if (e != null) {
35+
touchTypListener.onDoubleTap();
36+
return super.onDoubleTap(e);
37+
} else {
38+
return false;
39+
}
3640
}
3741

3842
@Override
3943
public boolean onFling(MotionEvent startevent, MotionEvent finishevent, float velocityX,
40-
float velocityY) {
44+
float velocityY) {
4145

4246
final float deltaX = finishevent.getX() - startevent.getX();
4347
final float deltaY = finishevent.getY() - startevent.getY();
@@ -67,13 +71,15 @@ public boolean onFling(MotionEvent startevent, MotionEvent finishevent, float ve
6771

6872
@Override
6973
public void onLongPress(MotionEvent e) {
70-
touchTypListener.onLongPress();
71-
super.onLongPress(e);
74+
if (e != null) {
75+
touchTypListener.onLongPress();
76+
super.onLongPress(e);
77+
}
7278
}
7379

7480
@Override
7581
public boolean onScroll(MotionEvent startevent, MotionEvent finishevent, float distanceX,
76-
float distanceY) {
82+
float distanceY) {
7783

7884
float deltaX = finishevent.getX() - startevent.getX();
7985
float deltaY = finishevent.getY() - startevent.getY();
@@ -103,8 +109,12 @@ public boolean onScroll(MotionEvent startevent, MotionEvent finishevent, float d
103109

104110
@Override
105111
public boolean onSingleTapConfirmed(MotionEvent e) {
106-
touchTypListener.onSingleTap();
107-
return super.onSingleTapConfirmed(e);
112+
if (e != null) {
113+
touchTypListener.onSingleTap();
114+
return super.onSingleTapConfirmed(e);
115+
} else {
116+
return false;
117+
}
108118
}
109119
}
110120

@@ -155,15 +165,18 @@ public TouchTypeDetector(Context context, TouchTypListener touchTypListener) {
155165
}
156166

157167
boolean onTouchEvent(MotionEvent event) {
158-
159-
switch (event.getActionMasked()) {
160-
case MotionEvent.ACTION_POINTER_DOWN:
161-
if (event.getPointerCount() == 3) {
162-
touchTypListener.onThreeFingerSingleTap();
163-
} else if (event.getPointerCount() == 2) {
164-
touchTypListener.onTwoFingerSingleTap();
165-
}
168+
if (event != null) {
169+
switch (event.getActionMasked()) {
170+
case MotionEvent.ACTION_POINTER_DOWN:
171+
if (event.getPointerCount() == 3) {
172+
touchTypListener.onThreeFingerSingleTap();
173+
} else if (event.getPointerCount() == 2) {
174+
touchTypListener.onTwoFingerSingleTap();
175+
}
176+
}
177+
return gDetect.onTouchEvent(event);
178+
} else {
179+
return false;
166180
}
167-
return gDetect.onTouchEvent(event);
168181
}
169182
}

0 commit comments

Comments
 (0)