android - 获取错误 "androidx.appcompat.widget.N cannot be cast to com.google.android.material.button.MaterialButton"

标签 android androidx android-jetpack

我将我的应用程序迁移到 androidx,现在在已发布的版本中,我收到了该错误。它在我的所有测试中都运行良好,甚至测试实验室也没有发现该错误。

我已经检查了所有引用资料,它们都很好。

出错的行:

    private MaterialButton mShiftStartDate;

private void getVars() {
.
        mShiftStartDate = v.findViewById(R.id.shift_start_date_tv);
.
}

和 xml:

    <com.google.android.material.button.MaterialButton
        style="@style/Widget.MaterialComponents.Button.OutlinedButton"
        android:id="@id/shift_start_date_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:textSize="18sp"
        android:visibility="visible"
        app:layout_constraintEnd_toEndOf="@id/shift_start_date_label"
        app:layout_constraintHorizontal_chainStyle="spread_inside"
        app:layout_constraintStart_toStartOf="@id/shift_start_date_label"
        app:layout_constraintTop_toBottomOf="@id/shift_start_date_label"
        tools:text="10/10/18" />

和部分build.gradle

    defaultConfig {
        applicationId appId
        targetSdkVersion 28
        minSdkVersion 19
        versionCode buildCode
        versionName versionMajor+"."+versionMinor+"."+versionRevision+"."+versionBuild
        resValue "string", "CURRENT_VERSION", versionName
    }
    compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.appcompat:appcompat:1.1.0-alpha03'
    implementation 'com.google.android.material:material:1.1.0-alpha04'
    implementation 'androidx.recyclerview:recyclerview:1.1.0-alpha03'
    implementation 'androidx.browser:browser:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3'
    implementation 'androidx.preference:preference:1.1.0-alpha04'
    implementation 'androidx.annotation:annotation:1.1.0-alpha02'
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'android.arch.navigation:navigation-fragment:1.0.0'
    implementation 'android.arch.navigation:navigation-ui:1.0.0'
    implementation 'com.google.android.gms:play-services-ads-lite:17.2.0'
    implementation 'com.google.android.gms:play-services-oss-licenses:16.0.2'
    implementation 'org.jetbrains:annotations:17.0.0'
}

搜索它没有发现任何其他问题示例。我唯一能想到的就是混淆器正在重命名它不应该重命名的东西。由于我无法在任何模拟器或使用测试设备中重现它(它只发生在 5 个用户身上,但总共发生了 26 次),所以我无法测试类似

-keep class androidx.appcompat.widget.** {*;}

这就是我所能想到的。

最佳答案

你在那里有一个重复的依赖:

implementation 'androidx.appcompat:appcompat:1.1.0-alpha03'
// implementation 'com.android.support:appcompat-v7:28.0.0'

并且没有widget N。 ProGuard 映射可能会告诉您它实际上是什么。

-keep,includedescriptorclass class androidx.appcompat.widget.** { *; }

使用稳定版本也可能有助于解决意外结果。

关于android - 获取错误 "androidx.appcompat.widget.N cannot be cast to com.google.android.material.button.MaterialButton",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55367207/

相关文章:

android - 我们如何反转十六进制颜色代码?

android - 如何使用 Dagger 2 在 ViewPager 中注入(inject)相同 fragment 的 ViewModel

java - 由 : android. view.InflateException : Binary XML file line #16: Error inflating class com. google.android.material.navigation.NavigationView 引起

具有底部导航的Android架构导航组件?

java - 如何在保留 Activity 中滚动功能的同时显示键盘?

Android 自动安装 APK

android - 即使应用程序卸载后,WorkManager 实例仍保持 Activity 状态(?)

android - 如何调整 LazyVerticalGrid 中项目的高度?

java - 抽屉导航菜单中的多行文本

Android 导航组件未显示正确的操作栏标题