用匕首注入的值为null

时间:2014-10-08 14:48:52

标签: android dagger

我是匕首的新手,我正试图通过玩耍和创建小型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()

我错过了什么吗?任何人都可以告诉我为什么它是空的?感谢。

1 个答案:

答案 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