我试图用Dagger实现一个简单的例子,其中Module只返回一个字符串
模块是:
@Module(
injects = { MainActivity.class }
)
public class MyDataModule {
public MyDataModule() {
}
@Provides
public MyDataModule provideMyData() {
return new MyDataModule();
}
public String createMyDataItems() {
return "MyDataString";
}
}
活动:
@Inject MyDataModule myDataModule;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.my_data);
textView.setText(myDataModule.createMyDataItems());
}
}
我在最后一行获得了NPE:
textView.setText(myDataModule.createMyDataItems());
答案 0 :(得分:1)
您需要使用
实例化对象图ObjectGraph.create(new MyDataModule())
您可以在official tutorial中阅读更多内容。
作为旁注,我建议您尝试设置Dagger 2而不是Dagger 1