Tencent / QMUI_Android

提高 Android UI 开发效率的 UI 库
http://qmuiteam.com/android
Other
14.42k stars 2.67k forks source link

QMUIActivity #513

Closed Theoneee closed 5 years ago

Theoneee commented 5 years ago

QMUIActivityA 和 QMUIActivityB 里包含QMUISegment+QMUIViewPager,QMUIViewPager里的Fragment是QMUIFragment,从A跳转到B后,滑动时报错:

` java.lang.ClassCastException: QMUIActivityB cannot be cast to com.qmuiteam.qmui.arch.QMUIFragmentActivity at com.qmuiteam.qmui.arch.QMUIFragment.getBaseFragmentActivity(QMUIFragment.java:102) at com.qmuiteam.qmui.arch.QMUIFragment$2.onScrollStateChange(QMUIFragment.java:268) at com.qmuiteam.qmui.arch.SwipeBackLayout$ViewDragCallback.onViewDragStateChanged(SwipeBackLayout.java:605) at android.support.v4.widget.ViewDragHelper.setDragState(ViewDragHelper.java:887) at android.support.v4.widget.ViewDragHelper.captureChildView(ViewDragHelper.java:476) at android.support.v4.widget.ViewDragHelper.tryCaptureViewForDrag(ViewDragHelper.java:910) at android.support.v4.widget.ViewDragHelper.processTouchEvent(ViewDragHelper.java:1119) at com.qmuiteam.qmui.arch.SwipeBackLayout.onTouchEvent(SwipeBackLayout.java:383) at android.view.View.dispatchTouchEvent(View.java:11798) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2962) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2643) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2968) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:485) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1843) at android.app.Activity.dispatchTouchEvent(Activity.java:3341) at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:68) at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:445) at android.view.View.dispatchPointerEvent(View.java:12037) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4885) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4680) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4184) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4237) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4203) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4330) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4211) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4387) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4184) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4237) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4203) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4211) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4184) at android.view.ViewRootImpl.deli

`

cgspine commented 5 years ago

这种场景应该警用掉 QMUIViewPager里的 Fragment 的手势返回,我改改, 你也可以先用 canDragBack 禁用掉。这样应该就会直接出发 QMUIActivity 的手势返回。

Theoneee commented 5 years ago

恩,上次是因为滑动返回QMUISegment卡顿我才换到的Activity,结果又有了这个问题,我又改回成了Fragment, 禁用掉了滑动返回就不会有那个卡顿了就行了。

Theoneee commented 5 years ago

反馈一下问题。哈哈

cgspine commented 5 years ago

fixed in 0.4.0