使用com.android在setOnTabSelectedListener上崩溃。支持:设计:28.0.0
我正在使用一个类库来扩展TabLayout。我正在尝试使用最新的支持库进行构建:使用com.android在setOnTabSelectedListener上崩溃。支持:设计:28.0.0,android,android-tablayout,androiddesignsupport,Android,Android Tablayout,Androiddesignsupport,我正在使用一个类库来扩展TabLayout。我正在尝试使用最新的支持库进行构建: implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support:design:28.0.0' implementation 'com.android.support:preference-v14:28.0.0' implementation 'com.android.support:suppor
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:preference-v14:28.0.0'
implementation 'com.android.support:support-v13:28.0.0'
这将导致崩溃:
java.lang.NoSuchMethodError: No virtual method setOnTabSelectedListener(Landroid/support/design/widget/TabLayout$OnTabSelectedListener;)
这是来自反编译的TabLayout.class
文件的源代码(它似乎不像其他版本那样有一个源jar):
我正在用三星Galaxy S8-API26-1440x2960运行Genymotion
我不确定设计是否有问题:28.0.0库,或者我只是在构建中做错了什么。它似乎可以与早期版本配合使用。任何建议都将不胜感激
/**
* @deprecated Use {@link #addOnTabSelectedListener(OnTabSelectedListener)} and
* {@link #removeOnTabSelectedListener(OnTabSelectedListener)}.
*/
它是在API级别26.1.0
中,也许这就是为什么会出现此错误
要解决此问题,请使用而不是
参考
示例代码:
tablayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager));
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tablayout));
请注意,不要使用折旧方法。您应该使用新的材料组件依赖项。有了这一行,一切正常,只需在Gradle中添加一行即可导入所有设计组件
implementation 'com.google.android.material:material:1.0.0'
有了这一行依赖项,RecyclerView、CardView、TableLayout和所有视图组件都可以使用。您还将拥有芯片、CardView、RecyclerView和tec
记住:
您不应该使用com.android.support和
同时在应用程序中添加com.google.android.material依赖项
在这里查看如何设置:我从两个版本下载了AAR文件:和: 从两个包中反编译TabLayout.class,我可以看到它的签名已从: 27.1.1
@Deprecated
public void setOnTabSelectedListener(@Nullable TabLayout.BaseOnTabSelectedListener listener)
}
28.0.0
@Deprecated
public void setOnTabSelectedListener(@Nullable TabLayout.OnTabSelectedListener listener) {
}
因此,现在,该方法需要的是BaseOnTabSelectedListener
,而不是OnTabSelectedListener
旧的onTabSelectedListener
不实现新的BaseOnTabSelectedListener
因此,可能还必须导入material组件,该组件具有新的OnTabSelectedListener实现:
implementation 'com.google.android.material:material:1.0.0'
onTabSelectedListener
(不实现BaseOnTabSelectedListener
onTabSelectedListener
(实现BaseOnTabSelectedListener
)
很抱歉,我没有直接演示如何修复它,因为我现在无法继续。但这是我猜的根本原因。尝试使用addOnTabSelectedListener(OnTabSelectedListener)
而不是setOnTabSelectedListener(…)
谢谢,但调用不在我的代码中。它在我使用的框架中-ResearchStack.square.Doc没有提到它已被删除。我从(AAR)反编译了该类文件和该方法仍然存在…它已被弃用..未被删除。这实际上并没有回答主要问题。谢谢。我认为如果我正在编写该类,该解决方案以及使用AddOnAbsSelectedListener将起作用;但是,我使用的是一个由框架实现的类:公共类IconTabLayout扩展了android.support.design.widget。TabLayout和material:1.0.0提供了com.google.android.material.tabs.TabLayout,除非我感到困惑,否则它不会帮助我。
@Deprecated
public void setOnTabSelectedListener(@Nullable TabLayout.OnTabSelectedListener listener) {
}
implementation 'com.google.android.material:material:1.0.0'