gpt4 book ai didi

android - 使用 com.android.support :design:28. 0.0 在 setOnTabSelectedListener 上崩溃

转载 作者:搜寻专家 更新时间:2023-11-01 07:42:33 26 4
gpt4 key购买 nike

我正在使用一个包含扩展 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:support-v13:28.0.0'

这会导致崩溃:

java.lang.NoSuchMethodError: No virtual method setOnTabSelectedListener(Landroid/support/design/widget/TabLayout$OnTabSelectedListener;)

这是反编译后的TabLayout.class文件的源码(好像没有其他版本的源码jar):

/** @deprecated */
@Deprecated
public void setOnTabSelectedListener(@Nullable TabLayout.BaseOnTabSelectedListener listener) { ... }

public interface OnTabSelectedListener extends TabLayout.BaseOnTabSelectedListener<TabLayout.Tab> {
}

public interface BaseOnTabSelectedListener<T extends TabLayout.Tab> { ... }

它适用于 27.1.1 和更早的版本,源代码如下所示:

/**
* @deprecated Use {@link #addOnTabSelectedListener(OnTabSelectedListener)} and
* {@link #removeOnTabSelectedListener(OnTabSelectedListener)}.
*/
@Deprecated
public void setOnTabSelectedListener(@Nullable OnTabSelectedListener listener) { ... }

/**
* Callback interface invoked when a tab's selection state changes.
*/
public interface OnTabSelectedListener { ... }

我在 Genymotion 中运行三星 Galaxy S8 - API 26 - 1440x2960。

我不确定 design:28.0.0 库是否存在问题,或者我只是在构建过程中做错了什么。它似乎适用于早期版本。任何建议表示赞赏。

最佳答案

我从两个版本下载了 AAR 文件:27.1.128.0.0 :

从两个包中反编译 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

因此,可能还必须导入具有 OnTabSelectedListener 新实现的 Material 组件:

implementation 'com.google.android.material:material:1.0.0'

Doc of old onTabSelectedListener(未实现 BaseOnTabSelectedListener

Doc of new onTabSelectedListener(实现 BaseOnTabSelectedListener)。

抱歉,但我没有直接展示如何修复它,因为我现在无法更进一步。但我猜这是根本原因。

关于android - 使用 com.android.support :design:28. 0.0 在 setOnTabSelectedListener 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52898492/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com