android-tablayouthelper icon indicating copy to clipboard operation
android-tablayouthelper copied to clipboard

IncompatibleClassChangeError

Open mnayef95 opened this issue 6 years ago • 3 comments

This crash happens when change tab

java.lang.IncompatibleClassChangeError: Class 'com.h6ah4i.android.tablayouthelper.TabLayoutHelper$2' does not implement interface 'com.google.android.material.tabs.TabLayout$BaseOnTabSelectedListener' in call to 'void com.google.android.material.tabs.TabLayout$BaseOnTabSelectedListener.onTabUnselected(com.google.android.material.tabs.TabLayout$Tab)' (declaration of 'com.google.android.material.tabs.TabLayout$1' appears in /data/app/com.truted-rUEWL7WfVvhr2YMKi3Y1jg==/split_lib_dependencies_apk.apk) at com.google.android.material.tabs.TabLayout$1.onTabUnselected(TabLayout.java:788) at com.google.android.material.tabs.TabLayout.dispatchTabUnselected(TabLayout.java:1736) at com.google.android.material.tabs.TabLayout.selectTab(TabLayout.java:1720) at com.google.android.material.tabs.TabLayout$TabLayoutOnPageChangeListener.onPageSelected(TabLayout.java:2967) at androidx.viewpager.widget.ViewPager.dispatchOnPageSelected(ViewPager.java:1947) at androidx.viewpager.widget.ViewPager.scrollToItem(ViewPager.java:686) at androidx.viewpager.widget.ViewPager.setCurrentItemInternal(ViewPager.java:670) at androidx.viewpager.widget.ViewPager.onTouchEvent(ViewPager.java:2263) at android.view.View.dispatchTouchEvent(View.java:12540) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3153) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2829) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2844) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2844) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2844) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2844) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2844) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2844) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2844) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2844) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2844) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:601) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1871) at android.app.Activity.dispatchTouchEvent(Activity.java:3384) at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69) at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69) at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:563) at android.view.View.dispatchPointerEvent(View.java:12788) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5675) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5470) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4963) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5016) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4982) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5119) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4990) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5176) 2019-01-18 23:53:40.819 16656-16656/com.truted E/AndroidRuntime: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4963) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5016) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4982) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4990) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4963) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7742) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7682) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7643) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7853) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:197) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:325) at android.os.Looper.loop(Looper.java:142) at android.app.ActivityThread.main(ActivityThread.java:6944) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

mnayef95 avatar Jan 18 '19 21:01 mnayef95

Did you use androidx?

BoxResin avatar Apr 23 '19 00:04 BoxResin

I have same problem and I am using androidx library.

2020-01-21 07:10:31.847 15402-15402/my.app.dev.debug E/AndroidRuntime: FATAL EXCEPTION: main Process: my.app.dev.debug, PID: 15402 java.lang.IncompatibleClassChangeError: Class 'com.h6ah4i.android.tablayouthelper.TabLayoutHelper$2' does not implement interface 'com.google.android.material.tabs.TabLayout$BaseOnTabSelectedListener' in call to 'void com.google.android.material.tabs.TabLayout$BaseOnTabSelectedListener.onTabSelected(com.google.android.material.tabs.TabLayout$Tab)' (declaration of 'com.google.android.material.tabs.TabLayout$2' appears in /data/app/my.app.dev.debug-yGfX_q4JzVLCxYUJsKPUtA==/base.apk) at com.google.android.material.tabs.TabLayout$2.onTabSelected(TabLayout.java:819) at com.google.android.material.tabs.TabLayout.dispatchTabSelected(TabLayout.java:1791) at com.google.android.material.tabs.TabLayout.selectTab(TabLayout.java:1784) at com.google.android.material.tabs.TabLayout.selectTab(TabLayout.java:1744) at com.google.android.material.tabs.TabLayout.populateFromPagerAdapter(TabLayout.java:1483) at com.google.android.material.tabs.TabLayout$PagerAdapterObserver.onChanged(TabLayout.java:3342) at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37) at androidx.viewpager.widget.PagerAdapter.notifyDataSetChanged(PagerAdapter.java:294) at my.app.core.feature.notifications.ui.view.NotificationPagerAdapter.accept(NotificationPagerAdapter.kt:18) at my.app.core.feature.notifications.ui.view.NotificationPagerAdapter.accept(NotificationPagerAdapter.kt:10) at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:63) at io.reactivex.internal.operators.observable.ObservableHide$HideDisposable.onNext(ObservableHide.java:67) at com.jakewharton.rxrelay2.BehaviorRelay$BehaviorDisposable.test(BehaviorRelay.java:364) at com.jakewharton.rxrelay2.BehaviorRelay$BehaviorDisposable.emitFirst(BehaviorRelay.java:327) at com.jakewharton.rxrelay2.BehaviorRelay.subscribeActual(BehaviorRelay.java:125) at io.reactivex.Observable.subscribe(Observable.java:12246) at io.reactivex.internal.operators.observable.ObservableHide.subscribeActual(ObservableHide.java:34) at io.reactivex.Observable.subscribe(Observable.java:12246) at io.reactivex.Observable.subscribe(Observable.java:12232) at io.reactivex.Observable.subscribe(Observable.java:12134) at my.app.core.feature.notifications.ui.view.NotificationCreateView.bindPresenter(NotificationCreateView.kt:42) at my.app.core.feature.notifications.ui.view.NotificationCreateView.bindPresenter(NotificationCreateView.kt:16) at com.cleverlance.mobile.android.screens.presenter.BasePresenterViewKt$createSelfBindingView$1.invoke(BasePresenterView.kt:21) at com.cleverlance.mobile.android.screens.presenter.BasePresenterViewKt$createSelfBindingView$1.invoke(Unknown Source:0) at com.cleverlance.mobile.android.screens.domain.ViewBinder.onViewAttachedToWindow(ViewBinder.kt:10) at android.view.View.dispatchAttachedToWindow(View.java:21271) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:3629) at android.view.ViewGroup.addViewInner(ViewGroup.java:5391) at android.view.ViewGroup.addView(ViewGroup.java:5167) at android.view.ViewGroup.addView(ViewGroup.java:5107) at android.view.ViewGroup.addView(ViewGroup.java:5080) at com.cleverlance.mobile.android.screens.view.ViewGroupExtensionsKt.addScreen(ViewGroupExtensions.kt:14) at com.cleverlance.mobile.android.screens.view.ViewGroupExtensionsKt.setScreen(ViewGroupExtensions.kt:10) at my.app.core.common.ui.view.MainActivity$bindDisposables$$inlined$with$lambda$1.accept(MainActivity.kt:89) at my.app.core.common.ui.view.MainActivity$bindDisposables$$inlined$with$lambda$1.accept(MainActivity.kt:50) at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:63) at com.jakewharton.rxrelay2.BehaviorRelay$BehaviorDisposable.test(BehaviorRelay.java:364) at com.jakewharton.rxrelay2.BehaviorRelay$BehaviorDisposable.emitNext(BehaviorRelay.java:358)

Update: So the problem is apparently in material components library not in yours. Crash occurs only with com.google.android.material:material:1.2.0-alpha03 but with com.google.android.material:material:1.1.0-rc02 it works just fine.

djdominoSVK avatar Jan 21 '20 06:01 djdominoSVK

This library depends on com.google.android.material:material:1.0.0 so higher version material libraries may not be compatible.

BoxResin avatar Jan 21 '20 09:01 BoxResin