0

私のAndroidプロジェクトにいくつかの依存性注入を追加しようとしているので、私が見つけた例に従ってモジュールを作成しました

@Module(entryPoints = {MyActivity.class})

public class MyModule {

    private final Context context;

    public MyModule (Context context) {
        this.context = context.getApplicationContext();
    }

    @Provides
    @Singleton
    Context applicationContext() {
        return context;
    }

    @Provides
    @Singleton
    EventBus provideEventBus() {
        return EventBusFactory.create();
    }
}

私は私のアプリケーションを持っています:

public class MyApplication extends Application{

    private ObjectGraph objectGraph;

    @Override
    public void onCreate() {
        super.onCreate();
        objectGraph = ObjectGraph.get(new MyModule(this));
    }

    public ObjectGraph getObjectGraph() {
        return objectGraph;
    }
}

と活動

public class MyActivity extends Activity {

    @App
    MyApplication application;

    @Inject
    EventBus eventBus;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ObjectGraph objectGraph = application.getObjectGraph();
        objectGraph.inject(this);
    ....

何が間違っているのか、何を見逃したのかわかりませんが、日食でエラーが表示されます:

ObjectGraph 型のメソッド get(Class) は、引数 (MyModuleModule) には適用されません。

この行でobjectGraph = ObjectGraph.get(new MyModule(this));

ビルドしようとすると、次のようになります。

my.android.app.MyModule の my.android.app.MyActivity に必要な my.android.lib.EventBus のバインドなし

誰かが私が間違っていることと私が忘れたことを教えてくれますか?

4

1 に答える 1

2

ObjectGraph クラスのインスタンスは、create() 静的メソッドを呼び出すことによって取得できます。

試す

objectGraph = ObjectGraph.create(new MyModule(this));

バインディング エラーの場合、EventBus ライブラリをビルド クラスパスに追加する必要があります。

于 2013-02-14T14:33:18.623 に答える