Ошибка Android: не удается найти ColorStateList из доступного ресурса при использовании диалогов

Я пытаюсь протестировать новые библиотеки материалов Android, но после нескольких часов исследований я не могу понять, как решить эту проблему.

Ошибка возникает, когда я пытаюсь открыть любой диалог.

Это ошибка

android.content.res.Resources$NotFoundException: не удается найти ColorStateList из доступного идентификатора ресурса № 0x7f070018 в android.content.res.ResourcesImpl.loadColorStateList(ResourcesImpl.java:1042) в android.content.res.Resources.loadColorStateList(Resources .java:1041) в android.content.res.TypedArray.getColor(TypedArray.java:469) в com.android.internal.policy.PhoneWindow.generateLayout(PhoneWindow.java:2436) в com.android.internal.policy. PhoneWindow.installDecor(PhoneWindow.java:2672) в com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:410) в com.android.internal.app.AlertController.installContent(AlertController.java:263) в android .app.AlertDialog.onCreate(AlertDialog.java:436) в android.app.Dialog.dispatchOnCreate(Dialog.java:407) в android.app.Dialog.show(Dialog.java:302)

Ресурс с идентификатором #0x7f070018 разрешается в abc_dialog_material_background, который является частью библиотеки appcompat.

Это код, вызывающий ошибку

val c = Calendar.getInstance()
        val year = c.get(Calendar.YEAR)
        val month = c.get(Calendar.MONTH)
        val day = c.get(Calendar.DAY_OF_MONTH)

        DatePickerDialog(requireContext(), DatePickerDialog.OnDateSetListener { _, y, m, dayOfMonth ->
            println(y)
            println(m)
            println(dayOfMonth)
        }, year, month, day).show()

Это мой файл build.gradle модуля

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'androidx.navigation.safeargs'

android {
    compileSdkVersion rootProject.compileSdkVersion
    buildToolsVersion '28.0.2'

    dataBinding {
        enabled = true
    }

    defaultConfig {
        applicationId 'moe.anekoisfinetoo.peek'
        minSdkVersion rootProject.minSdkVersion
        targetSdkVersion rootProject.targetSdkVersion
        versionCode 1000
        versionName '0.1.0'
        testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    /* Any jar files */
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    /* Android Constraint Layout
     * https://developer.android.com/training/constraint-layout/index.html */
    implementation "androidx.constraintlayout:constraintlayout:$rootProject.constraintLayoutVersion"

    /* Android KTX
     * https://developer.android.com/kotlin/ktx */
    implementation "androidx.core:core-ktx:$rootProject.ktxVersion"

    /* Android Lifecycle Libraries
     * https://developer.android.com/topic/libraries/architecture/lifecycle */
    implementation "androidx.lifecycle:lifecycle-extensions:$rootProject.lifecycleExtensionsVersion"

    /* Android Material Components
     * https://github.com/material-components/material-components-android */
    implementation "com.google.android.material:material:$rootProject.materialVersion"

    /* Android Navigation
     * https://developer.android.com/topic/libraries/architecture/navigation */
    implementation "android.arch.navigation:navigation-fragment-ktx:$rootProject.navigationVersion"
    implementation "android.arch.navigation:navigation-ui-ktx:$rootProject.navigationVersion"
    androidTestImplementation "android.arch.navigation:navigation-testing-ktx:$rootProject.navigationVersion"

    /* Android Support Libraries
     * https://developer.android.com/topic/libraries/support-library/index.html */
    implementation "androidx.appcompat:appcompat:$rootProject.appCompatVersion"

    /* Kotlin
     * https://kotlinlang.org/ */
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$rootProject.kotlinVersion"

    /* Material Dialogs
     * https://github.com/afollestad/material-dialogs */
    implementation "com.afollestad.material-dialogs:core:$rootProject.materialDialogs"

    /* Testing */
    testImplementation "junit:junit:$rootProject.junitVersion"
    androidTestImplementation "androidx.test:runner:$rootProject.runnerVersion"
    androidTestImplementation "androidx.test.espresso:espresso-core:$rootProject.espressoCoreVersion"
}

Все версии извлекаются из проекта build.gradle и являются актуальными.


person DarkerTV    schedule 01.09.2018    source источник


Ответы (1)


Обнаружил проблему проделав все заново пошагово в новом проекте, это был пункт в теме приложения.

<item name="android:statusBarColor">?android:attr/windowBackground</item>

После удаления этой строки или изменения значения на цвет, определенный в colors.xml, диалоги снова начали работать. А так как я хочу, чтобы строка состояния была такого же цвета, как и фон, я просто изменил ее для этого, получив тот же результат и рабочие диалоги.

<item name="android:statusBarColor">?android:attr/colorBackground</item>
person DarkerTV    schedule 01.09.2018