由于类强制转换异常,Dagger 2注入失败

时间:2015-12-11 16:32:34

标签: android dependency-injection dagger-2

我使用匕首进行依赖注入,并且我不时会得到此类强制转换异常:

Caused by: java.lang.ClassCastException: android.app.Application cannot be   
           cast to myPackage.MyApplication                                                                              
       at myPackage.ui.activity.BaseActivity.injectAppComponent(BaseActivity.java:63)                                                                               
       at myPackage.ui.activity.BaseActivity.onCreate(BaseActivity.java:42)

这是我进行注射的基本活动方法:

protected void injectAppComponent() {
    ((MyApplication) getApplication()).getAppComponent().inject(this);
}

申请类

public class MyApplication extends Application {

private AppComponent appComponent;

private void injectComponent() {
    appComponent = DaggerAppComponent.builder()
            .appModule(new AppModule(this)).build();
    appComponent.inject(this);
}


public AppComponent getAppComponent() {
    return appComponent;
}
}  

在我的清单中,我定义了这样的应用名称:

application
    android:name="myPackage.MyApplication"

但是我仍然遇到这个问题,有没有想过为什么会这样?

1 个答案:

答案 0 :(得分:2)

你可能还没有找到答案,但我刚遇到这个问题,我的问题是我尝试注入的类的接口是package-private

我将其更改为公开,一切正常。