我是 dagger 的新手,我正在尝试通过尝试和创建小型 Android 应用程序来研究它。 我有一个像这样的应用程序类:
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; }
}
以及注入(inject)应用程序的 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();
}
}
我的应用程序已在 list 文件中分配,并且断点 int App.onCreate()
被触发。
我错过了什么吗?谁能告诉我为什么它是空的?谢谢。
最佳答案
您的“MainActivity”需要调用在您的应用程序中创建的 ObjectGraph#Inject 方法。
您可以查看:https://github.com/square/dagger/tree/master/examples/android-simple或者这个https://github.com/square/dagger/tree/master/examples/android-activity-graphs
关于android - 用dagger注入(inject)的值为null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26259900/