Java android dagger2注入错误无法强制转换

Java android dagger2注入错误无法强制转换,java,android,dagger-2,Java,Android,Dagger 2,调用onItemSelected()方法时出现此错误此错误的含义是什么?也许您知道如何修复此错误 在MainActivity中调用的方法 @Override public void onAdviceBodyItemSelected(Advice advice) { SideEffectReportActivity.start(this, advice); } 接口 public interface MainRouter extends BodyRouter { void onAdvi

调用onItemSelected()方法时出现此错误此错误的含义是什么?也许您知道如何修复此错误

在MainActivity中调用的方法

@Override
public void onAdviceBodyItemSelected(Advice advice) {
    SideEffectReportActivity.start(this, advice);
}
接口

public interface MainRouter extends BodyRouter {

void onAdviceBodyItemSelected(Advice advice);

   }
,, 碎片

,, 演讲者班

public class AdviceListPresenter extends BasePresenter<AdviceListView,` 

    MainRouter> {

    private static final String TAG = "advicelistpresenter";
    private



final GetSideEffectListByCategoryInteractor mGetSideEffectListInteractor;

@Inject
AdviceListPresenter(GetSideEffectListByCategoryInteractor getSideEffectListInteractor) {
    mGetSideEffectListInteractor = getSideEffectListInteractor;
}

@Override public void onStart() {

}

@Override public void onStop() {
    mGetSideEffectListInteractor.unsubscribe();
}


void getList(Body body) {
    getView().onStartLoading();
    mGetSideEffectListInteractor.execute(body.name(), new Subscriber<List<Advice>>() {
        @Override public void onCompleted() {

        }

        @Override public void onError(Throwable e) {
            getView().onLoaded();
        }

        @Override public void onNext(List<Advice> groups) {
            getView().onLoaded();

            System.out.println("----------------------------------------------------------qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq--------------------------------: ");
            getView().updateAList(groups);
        }
    });
}


void onItemSelected(Advice advice) {
  // getRouter().openSideEffect(advice);
    //getRouter().onAdviceItemSelected(advice);
   // Log.e(TAG," ADVICE :" + advice.bodypartProblemsGroup);

    Log.e(TAG,"router :" + getRouter());
    getRouter().onAdviceBodyItemSelected(advice);
}
void onGItemSelected(AdviceGroup adviceGroup) {
    // getRouter().openSideEffect(advice);
    //getRouter().onAdviceItemSelected(advice);
   // Log.e(TAG," ADVICE :" + advice.bodypartProblemsGroup);
}
}
公共类AdviceListPresenter扩展了BasePresenter{
私有静态最终字符串标记=“advicelistpresenter”;
私有的
最终GetSideEffectListByCategoryInteractor mGetSideEffectListInteractor;
@注入
AdviceListPresenter(GetSideEffectListByCategoryInteractor getSideEffectListInteractor){
mGetSideEffectListInteractor=getSideEffectListInteractor;
}
@重写公共void onStart(){
}
@覆盖顶部的公共void(){
mGetSideEffectListInteractor.unsubscribe();
}
void getList(正文){
getView().onStartLoading();
mGetSideEffectListInteractor.execute(body.name(),new Subscriber()){
@覆盖已完成的公共void(){
}
@覆盖公共无效onError(可丢弃的e){
getView().onLoaded();
}
@覆盖公共void onNext(列表组){
getView().onLoaded();
System.out.println(“--------------------------------------------------------------QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ;
getView().UpdateList(组);
}
});
}
已选择无效(通知){
//getRouter().openSideEffect(通知);
//getRouter().onAdviceItemSelected(通知);
//Log.e(标记“ADVICE:+ADVICE.bodypartProblemsGroup);
Log.e(标记“router:+getRouter());
getRouter().OnAdvIceCodeyItemSelected(通知);
}
已选择的项目无效(AdviceGroup AdviceGroup){
//getRouter().openSideEffect(通知);
//getRouter().onAdviceItemSelected(通知);
//Log.e(标记“ADVICE:+ADVICE.bodypartProblemsGroup);
}
}
致命异常:主 进程:com.ct.rrapp,PID:15838 java.lang.ClassCastException:com.ct.rrapp.presentation.side_Effect.SideEffectReportActivity无法强制转换为nl.creativeict.radiotherapp.presentation.main.main路由器 在com.ct.rrapp.presentation.side_Effect.advice_list.AdviceListPresenter.onItemSelected(AdviceListPresenter.java:80) 在com.ct.rrapp.presentation.side_Effect.advice_list.AdviceListFragment$1.onItemSelected(AdviceListFragment.java:93) 在com.ct.rrapp.presentation.side_Effect.advice_list.common.AdviceListAdapter.lambda$onBindViewHolder$1(AdviceListAdapter.java:55) 在com.ct.rrapp.presentation.side\u Effect.advice\u list.common.AdviceListAdapter$$Lambda$4.onClick(未知源) 在android.view.view.performClick上(view.java:5697) 在android.view.view$PerformClick.run(view.java:22526) 位于android.os.Handler.handleCallback(Handler.java:739) 位于android.os.Handler.dispatchMessage(Handler.java:95) 位于android.os.Looper.loop(Looper.java:158) 位于android.app.ActivityThread.main(ActivityThread.java:7224) 位于java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:1230) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

从这条线看,

@Override
public void onAdviceBodyItemSelected(Advice advice) {
    SideEffectReportActivity.start(this, advice);
}
以及此异常消息:

java.lang.ClassCastException:SideEffectReportActivity无法强制转换到MainRouter

可以得出结论,静态方法
SideEffectReportActivity#start(*,Advice)
期望
MainRouter
作为第一个参数,而
this
对象的实例类没有实现
MainRouter
接口


如果
对象是
MainActivity
的实例,这意味着您的活动没有实现
MainRouter

为什么要标记此匕首?您的代码中没有匕首的迹象。@Inject不是匕首批注吗?哦,抱歉,仅此一项就错过了
@Inject
,我认为此错误与Injection有关单击后它会爆炸
@Override
public void onAdviceBodyItemSelected(Advice advice) {
    SideEffectReportActivity.start(this, advice);
}