SwipeActionAdapter
SwipeActionAdapter copied to clipboard
java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.view.View$OnTouchListener.onTouch(android.view.View, android.view.MotionEvent)' on a null object reference
02-23 17:54:32.444 1926 1926 E AndroidRuntime: FATAL EXCEPTION: main
02-23 17:54:32.444 1926 1926 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.view.View$OnTouchListener.onTouch(android.view.View, android.view.MotionEvent)' on a null object reference
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at com.wdullaer.swipeactionadapter.SwipeViewGroup.onInterceptTouchEvent(SwipeViewGroup.java:174)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2108)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2197)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2403)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1737)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.app.Activity.dispatchTouchEvent(Activity.java:2771)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2364)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.View.dispatchPointerEvent(View.java:9520)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4230)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4096)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3787)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3844)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5922)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5896)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5857)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6025)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.os.MessageQueue.nativePollOnce(Native Method)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.os.MessageQueue.next(MessageQueue.java:323)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.os.Looper.loop(Looper.java:135)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5417)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
02-23 17:54:32.444 1926 1926 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
You didn't set a background view?
Without any code, it's more or less impossible for me to help you.
I'm having the same issue. I pretty much just copy and pasted the example code on the git home screen. This is where the issue happens in the SwipeActionAdapter code:
@Override public boolean onInterceptTouchEvent(MotionEvent ev) { // Start tracking the touch when a child is processing it return super.onInterceptTouchEvent(ev) || swipeTouchListener.onTouch(this, ev); }
Here is my code setting up the adapter:
`mAccountAdapter.addBackground(SwipeDirection.DIRECTION_FAR_LEFT, R.layout.row_account_left) .addBackground(SwipeDirection.DIRECTION_FAR_RIGHT, R.layout.row_account_right) .addBackground(SwipeDirection.DIRECTION_NORMAL_LEFT, R.layout.row_account_left) .addBackground(SwipeDirection.DIRECTION_NORMAL_RIGHT, R.layout.row_account_right) .addBackground(SwipeDirection.DIRECTION_NEUTRAL, R.layout.row_account_left);
mAccountAdapter.setSwipeActionListener(new SwipeActionAdapter.SwipeActionListener(){
@Override
public boolean hasActions(int position, SwipeDirection direction){
if(direction.isLeft()) return true; // Change this to false to disable left swipes
if(direction.isRight()) return true;
return false;
}
@Override
public boolean shouldDismiss(int position, SwipeDirection direction){
// Only dismiss an item when swiping normal left
return direction == SwipeDirection.DIRECTION_NORMAL_LEFT;
}
@Override
public void onSwipe(int[] positionList, SwipeDirection[] directionList){
for(int i=0;i<positionList.length;i++) {
SwipeDirection direction = directionList[i];
int position = positionList[i];
String dir = "";
switch (direction) {
case DIRECTION_FAR_LEFT:
dir = "Far left";
break;
case DIRECTION_NORMAL_LEFT:
dir = "Left";
break;
case DIRECTION_FAR_RIGHT:
dir = "Far right";
break;
case DIRECTION_NORMAL_RIGHT:
AlertDialog.Builder builder = new AlertDialog.Builder(mHomeActivity);
builder.setTitle("Test Dialog").setMessage("You swiped right").create().show();
dir = "Right";
break;
}
Toast.makeText(
mHomeActivity,
dir + " swipe Action triggered on " + mAccountAdapter.getItem(position),
Toast.LENGTH_SHORT
).show();
mAccountAdapter.notifyDataSetChanged();
}
}
});`
Does it also happen if you just run the sample app? Does it happen on each swipe? If it doesn't happen with the sample add, could you change the sample app until it does happen?
I can't reproduce this right now, which makes it hard to fix
Same here, any solution?
In my case, it is because mDownViewGroup is not set in SwipeActionTouchListener:268 because the cast to SwipeViewGroup does not work (It is of type RelativeLayout).
This was due to overriding SwipeActionAdapter and overriding the getView() method in it.