Unxepcted ClassCastException от findViewById

У меня есть следующий код в файле xml:

<android.support.v7.widget.GridLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id = "@+id/buttonsLayout"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:layout_gravity = "center"
     app:columnCount="4"
     app:rowCount="4"
     app:useDefaultMargins="false"
     >
</android.support.v7.widget.GridLayout>

и я динамически заполняю этот GridLayout, поэтому я пытаюсь получить объект с помощью:

android.support.v7.widget.GridLayout gl = 
    (android.support.v7.widget.GridLayout)findViewById(R.id.buttonsLayout);

Что дает мне следующую ошибку:

Caused by: java.lang.ClassCastException: android.support.v7.internal.widget.TintButton cannot be cast to android.support.v7.widget.GridLayout at com.education4all.mathcoach.TaskActivity.onCreate(TaskActivity.java:134)
at android.app.Activity.performCreate(Activity.java:4465)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2033)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104) 
at android.app.ActivityThread.access$600(ActivityThread.java:132) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1157) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4575) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 
at dalvik.system.NativeStart.main(Native Method)

Это очень странно, потому что этот код работал, и вдруг появляется эта ошибка. Почему это могло быть?

build_gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion '21.1.2'
    defaultConfig {
        applicationId "com.education4all.mathcoach"
        minSdkVersion 10
        targetSdkVersion 22
        versionName '1.0.2'
        versionCode 4
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile 'com.android.support:gridlayout-v7:18.0.+'
}

person UpmostScarab    schedule 19.08.2016    source источник
comment
Вы пытались сделать недействительным и перезапустить?   -  person Swapnil Meshram    schedule 19.08.2016
comment
Похоже, ваши удостоверения личности спутались. Попробуйте очистить, а затем восстановить.   -  person Gary Bak    schedule 19.08.2016
comment
@SwapnilMeshram Ничего из этого не помогло   -  person UpmostScarab    schedule 19.08.2016
comment
К сожалению, @GaryBak не помог.   -  person UpmostScarab    schedule 19.08.2016
comment
Не могли бы вы предоставить нам файлы build.gradle и макета активности в формате xml?   -  person Seishin    schedule 19.08.2016
comment
@Seishin добавил оба   -  person UpmostScarab    schedule 19.08.2016
comment
@UpmostScarab, не могли бы вы добавить файл build.gradle приложения, а не файл проекта? :)   -  person Seishin    schedule 19.08.2016
comment
@UpmostScarab попробуйте использовать более высокую версию библиотеки поддержки, то есть: com.android.support:appcompat-v7:22.+, очистите и попробуйте запустить проект.   -  person Seishin    schedule 19.08.2016
comment
@Seishin Это сработало, спасибо! Должен ли я также использовать более новую версию GridLayout? Также не могли бы вы создать и ответить? Или я закрою вопрос.   -  person UpmostScarab    schedule 19.08.2016
comment
Обычно не следует смешивать версии библиотек совместимости приложений. Я удивлен, что это может вызвать эту проблему, но это может вызвать другие проблемы (например, NoSuchMethodException или что-то в этом роде).   -  person DeeV    schedule 19.08.2016


Ответы (1)


Попробуйте использовать более высокую версию библиотеки поддержки, т.е.: com.android.support:appcompat-v7:22.+, почистите и попробуйте запустить проект.

Вы также можете использовать последнюю версию GridLayout.

person Seishin    schedule 19.08.2016