9

Dagger をアプリケーションに統合しようとしています。そして、私は問題に遭遇しました。実行時に次のエラーが発生します。

java.lang.IllegalStateException: Errors creating object graph:
    com.app.NavigationController has no injectable members. Do you want to add an injectable constructor? required by class com.app.fragments.LoginFragment

他の同様の回答を調べてみましたが、これまでのところ何も役に立ちませんでした...

グラフの構築に関連するものはすべて、Android アクティビティ グラフの例とほとんど同じように実装されています。

と の 2 つのモジュールがActivityModuleありApplicationModuleます。

@Module(
        includes = ApplicationModule.class,
        injects = {
                MainActivity.class,
                LoginFragment.class
        }
)
public class ActivityModule {

    private BaseActivity activity;

    public ActivityModule(BaseActivity activity) {
        this.activity = activity;
    }

    @Provides
    @Singleton
    NavigationController provideNavigation() {
        return new NavigationController(activity);
    }
}

そしてもう一つ

@Module(
    injects = {
            MainActivity.class,
            LoginFragment.class},
    complete = false
)
public class ApplicationModule {

    private Context context;

    public ApplicationModule(Context context) {
        this.context = context;
    }

    @Provides
    @Singleton
    ApiService provideApiService() {
        ....
        return restAdapter.create(ApiService.class);
    }
}

私は何を間違っていますか?

更新:
詳細を追加:

断片:

public class LoginFragment extends BaseFragment {

    //...

    @Inject
    NavigationController navigation;

    //...

ナビゲーション コントローラ:

public class NavigationController {

//...

public NavigationController(BaseActivity activity) {
    this.activity = activity;
}

//...
}
4

1 に答える 1

2

質問は、この Dagger GitHub issue #372で回答されました

于 2014-01-10T09:55:25.950 に答える