2013-02-14 38 views
0

我试着去添加一些依赖注入在我的Android项目,所以下面的例子中我发现我创建了模块在类型ObjectGraph GET方法(类<T>)不适用于参数

@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); 
    .... 

我”不确定自己是否错过了什么我做错了还是什么,但是我的日食显示我的错误:

The method get(Class) in the type ObjectGraph is not applicable for the arguments (MyModuleModule)

在这一行objectGraph = ObjectGraph.get(new MyModule(this));

,当我试图做构建我得到:

No binding for my.android.lib.EventBus required by my.android.app.MyActivity for my.android.app.MyModule

任何人都可以告诉我我做错了什么,我忘了什么?

回答

2

ObjectGraph类的实例可以通过调用create()静态方法获得。

尝试

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

对于绑定错误,您必须将EventBus库添加到您的构建类路径中。

+0

我希望Maven将我的lib jar添加到我的pom文件后添加到我的类路径中,那么我应该做些什么吗? – user902383 2013-02-14 14:43:11

+0

嗯,我不知道muchabout Maven,但错误显然表示EventBus库不在构建类路径。 – 2013-02-14 15:00:19

+0

你是对的,我没有注意到,我使用了错误的类,但我的问题的第一部分仍然没有解决,我遵循你的建议后,我得到了“无法对非静态方法进行静态引用”错误 – user902383 2013-02-14 16:21:26

相关问题