我是匕首的新手,我正试图通过玩耍和创建小型Android应用程序来研究它。 我有一个像这样的Application类:
class App extends Application {
@Override onCreate() {
super.onCreate();
ObjectGraph objectGraph = ObjectGraph.create(new AppModule(this));
objectGraph.inject(this);
}
}
和这样的模块:
@dagger.Module(injects = {App.class, MainActivity.class})
public class AppModule {
private App app;
public AppModule(App app) { this.app = app; }
@Provides @Singleton App provideApp(){ return app; }
}
和注入app的Activity:
public class MainActivity extends Activity {
@Inject App app;
@Override onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(app == null)
Toast.makeText(this, "app is null", 1000).show();
}
}
我的应用程序在清单文件中分配,并且触发了断点int App.onCreate()
。
我错过了什么吗?任何人都可以告诉我为什么它是空的?感谢。
答案 0 :(得分:3)
您的'MainActivity'需要调用在您的应用程序中创建的ObjectGraph #Inject方法。
您可以查看:https://github.com/square/dagger/tree/master/examples/android-simple或此https://github.com/square/dagger/tree/master/examples/android-activity-graphs