出现错误“ androidx.appcompat.widget.N无法转换为com.google.android.material.button.MaterialButton”

时间:2019-03-26 22:41:02

标签: 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'
}

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

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

这就是我能想到的。

1 个答案:

答案 0 :(得分:1)

您那里有重复的依赖项:

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.** { *; }

使用稳定版本也可能有助于理清意外的结果。