在Dagger中注入我的模块给了我NPE

时间:2015-06-17 18:27:24

标签: android dagger

我试图用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());

1 个答案:

答案 0 :(得分:1)

您需要使用

实例化对象图
ObjectGraph.create(new MyDataModule())

您可以在official tutorial中阅读更多内容。

作为旁注,我建议您尝试设置Dagger 2而不是Dagger 1