После включения правила (proguard-rules.pro) начинает выдавать ошибку не понимаю почему

Когда я нажимаю на метод, который содержит тип такого кода, я получаю сообщение об ошибке (невозможно привести к). Я не знаю, что еще добавить в правила.

ChatFragment chatFragment = (ChatFragment) getSupportFragmentManager().findFragmentByTag(fragmentClass.getSimpleName());

Android Studio 3.2.1
minSdkVersion 19
targetSdkVersion 28

classpath 'com.android.tools.build:gradle:3.3.2'

minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release

Мои правила таковы:

-keepattributes SourceFile,LineNumberTable
-keepattributes Signature
-keepattributes *Annotation*
-keepattributes Exceptions


-keep class android.support.v7.widget.**{ *; }
-keep class android.support.v7.widget.SearchView { *; }
-keep class javax.annotation.** { *; }
-keep class com.google.android.gms.** { *; }
-keep class com.google.common.collect.** { *; }
-keep class com.github.ajalt.reprint.module.** { *; }
-keep class com.samsung.** {*;}
-keep class com.squareup.okhttp.OkHttpClient.** {*;}
-keep interface android.support.v7.* { *; }
-keep class com.github.siyamed.shapeimageview.**{ *; }
-keep class org.java-websocket.**{ *; }
-keep class com.github.NaikSoftware.**{ *; }
-keep class com.crashlytics.sdk.android.**{ *; }
-keep class com.crashlytics.android.CrashlyticsInitProvider.**{ *; }
-keep class com.app.motohq.motohqapp.app.customs.Pair{ *; }



-dontwarn com.github.siyamed.**
-dontwarn android.support.v7.**
-dontwarn okio.**
-dontwarn okhttp3.**
-dontwarn retrofit2.**
-dontwarn com.squareup.picasso.**
-dontwarn javax.annotation.Nullable
-dontwarn java.lang.invoke.**
-dontwarn com.pushtorefresh.storio2.**
-dontwarn com.google.android.gms.**
-dontwarn com.samsung.**
-dontwarn android.support.v4.**

Process: com.app.motohq.motohqapp, PID: 9586
    java.lang.ClassCastException: com.app.motohq.motohqapp.ui.a.a.c.c cannot be cast to com.app.motohq.motohqapp.ui.a.g.c
        at com.app.motohq.motohqapp.ui.activities.MessagesActivity.b(MessagesActivity.java:243)
        at com.app.motohq.motohqapp.ui.a.a.c.c.a(MenuLastMessageDialogFragment.java:47)
        at com.app.motohq.motohqapp.d.c.b.a.f.a(MenuChatDialogFragmentView$$State.java:24)
        at com.app.motohq.motohqapp.d.b.a.g.a(MenuChatDialogFragmentPresenter.java:22)
        at com.app.motohq.motohqapp.b.x$a.onClick(DialogMenuStatusChatBindingImpl.java:129)
        at android.view.View.performClick(View.java:6256)
        at android.view.View$PerformClick.run(View.java:24701)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

Пожалуйста, поделитесь своим кодом, а также

Tamir Abutbul 01.04.2019 19:16

Ошибка говорит вам, что когда вы выполняете getSupportFragmentManager().findFragmentByTag(fragmentClass.‌​getSimpleName());, вы возвращаете не экземпляр ChatFragment, а экземпляр другого. Где код, которым вы добавляете фрагмент? По сути, fragmentClass — это не тот же тип класса, что и ChatFragment, поскольку он возвращает другое имя класса при вызове getSimpleName.

Bobbake4 01.04.2019 20:01

Я так понимаю, что приложение написало в сообщении об ошибке, когда я отключаю правило (proguard-rules.pro), ошибки нет и все работает хорошо.

Gennadii Ianchev 02.04.2019 02:03

FragmentManager fragmentManager = baseActivity.getSupportFragmentManager(); FragmentTransaction ft = fragmentManager.beginTransaction(); fragmentManager.popBackStack(fragment.getClass().getSimpleNa‌​me(), 0); ft.addToBackStack(fragment.getClass().getSimpleName()); ft.replace(содержимое, фрагмент, фрагмент.getClass().getSimpleName()); ft.коммит();

Gennadii Ianchev 02.04.2019 02:09

Я обнаружил проблему, мне нужно было использовать getName() вместо getSimpleName().

Gennadii Ianchev 02.04.2019 22:03

@GennadiiIanchev спасибо .. так редко можно найти идеальные ответы в комментариях.

Anukool srivastav 08.12.2020 07:04
1
6
461
0

Другие вопросы по теме