堆栈:0
java.lang.IndexOutOfBoundsException
1
at android.view.ViewGroup.removeFromArray(ViewGroup.java:5316)
2
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5504)
3
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5466)
4
at android.view.ViewGroup.removeView(ViewGroup.java:5397)
5
at com.app.hubert.guide.core.GuideLayout.dismiss(GuideLayout.java:253)
6
at com.app.hubert.guide.core.GuideLayout.remove(GuideLayout.java:247)
7
at com.app.hubert.guide.core.GuideLayout$1.onClick(GuideLayout.java:89)
8
at android.view.View.performClick(View.java:7192)
9
at com.app.hubert.guide.core.GuideLayout.performClick(GuideLayout.java:97)
10
at com.app.hubert.guide.core.GuideLayout.onTouchEvent(GuideLayout.java:123)
11
at android.view.View.dispatchTouchEvent(View.java:13503)
12
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3067)
13
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2752)
14
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
15
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2766)
16
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
17
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2766)
18
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
19
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2766)
20
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
21
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2766)
22
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073)
23
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2766)
24
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:613)
25
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1933)
26
at android.app.Activity.dispatchTouchEvent(Activity.java:4147)
27
at com.mubu.app.facade.common.BaseActivity.dispatchTouchEvent(BaseActivity.java:280)
堆栈:0 java.lang.IndexOutOfBoundsException 1 at android.view.ViewGroup.removeFromArray(ViewGroup.java:5316) 2 at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5504) 3 at android.view.ViewGroup.removeViewInternal(ViewGroup.java:5466) 4 at android.view.ViewGroup.removeView(ViewGroup.java:5397) 5 at com.app.hubert.guide.core.GuideLayout.dismiss(GuideLayout.java:253) 6 at com.app.hubert.guide.core.GuideLayout.remove(GuideLayout.java:247) 7 at com.app.hubert.guide.core.GuideLayout$1.onClick(GuideLayout.java:89) 8 at android.view.View.performClick(View.java:7192) 9 at com.app.hubert.guide.core.GuideLayout.performClick(GuideLayout.java:97) 10 at com.app.hubert.guide.core.GuideLayout.onTouchEvent(GuideLayout.java:123) 11 at android.view.View.dispatchTouchEvent(View.java:13503) 12 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3067) 13 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2752) 14 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073) 15 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2766) 16 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073) 17 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2766) 18 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073) 19 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2766) 20 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073) 21 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2766) 22 at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3073) 23 at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2766) 24 at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:613) 25 at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1933) 26 at android.app.Activity.dispatchTouchEvent(Activity.java:4147) 27 at com.mubu.app.facade.common.BaseActivity.dispatchTouchEvent(BaseActivity.java:280)
猜测原因是:GuideLayout # performClick 这里会不会跟super.onTouchEvent(event)冲突呀? setOnClickListener存在到达两次,两次remove自己就挂了啊。 highLights = guidePage.getHighLights();
for (HighLight highLight : highLights) {
RectF rectF = highLight.getRectF((ViewGroup) getParent());
if (rectF.contains(upX, upY)) {
notifyClickListener(highLight);
return true;
}
}
//performClick();
}
break;
case MotionEvent.ACTION_CANCEL: float upX = event.getX(); float upY = event.getY(); if (Math.abs(upX - downX) < touchSlop && Math.abs(upY - downY) < touchSlop) { List