Karumi / Rosie

Rosie is an Android framework to create applications following the principles of Clean Architecture.
Other
1.82k stars 157 forks source link

RuntimeException with 2 or more presenters #91

Closed jaimegc closed 6 years ago

jaimegc commented 6 years ago

If there are two or more presenters and the view is destroyed, when the getView () method is invoked the proxy works for a presenter but not for more. If two or more are implemented, only the last one works.

Example:

_public class CharacterDetailsActivity extends MarvelActivity
    implements **CharacterCrashDetailsPresenter.View**, CharacterDetailsPresenter.View {...}_

Process: com.karumi.rosie.sample, PID: 20529
                                                   java.lang.RuntimeException: Internal error invoking the success object
                                                       at com.karumi.rosie.domain.usecase.RosieUseCase$1.run(RosieUseCase.java:114)
                                                       at android.os.Handler.handleCallback(Handler.java:739)
                                                       at android.os.Handler.dispatchMessage(Handler.java:95)
                                                       at android.os.Looper.loop(Looper.java:234)
                                                       at android.app.ActivityThread.main(ActivityThread.java:5526)
                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                    Caused by: java.lang.reflect.InvocationTargetException
                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                       at com.karumi.rosie.domain.usecase.RosieUseCase$1.run(RosieUseCase.java:112)
                                                       at android.os.Handler.handleCallback(Handler.java:739)
                                                       at android.os.Handler.dispatchMessage(Handler.java:95)
                                                       at android.os.Looper.loop(Looper.java:234)
                                                       at android.app.ActivityThread.main(ActivityThread.java:5526)
                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                    Caused by: java.lang.ClassCastException: $Proxy5 cannot be cast to com.karumi.rosie.sample.characters.view.presenter.CharacterCrashDetailsPresenter$View
                                                       at com.karumi.rosie.sample.characters.view.presenter.CharacterCrashDetailsPresenter$2.onCharacterDetailsLoaded(CharacterCrashDetailsPresenter.java:62)
                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                       at com.karumi.rosie.domain.usecase.RosieUseCase$1.run(RosieUseCase.java:112)
                                                       at android.os.Handler.handleCallback(Handler.java:739)
                                                       at android.os.Handler.dispatchMessage(Handler.java:95)
                                                       at android.os.Looper.loop(Looper.java:234)
                                                       at android.app.ActivityThread.main(ActivityThread.java:5526)
                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

Thanks in advance.

pedrovgs commented 6 years ago

Thanks for reporting @jguerrero-icinetic I'll take a look if I have time 😃