android - 用dagger注入(inject)的值为null

标签 android dagger

我是 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/

相关文章:

android - 由于找不到元素,Calabash Android 随机失败

android - 通过柄中的不同具体类绑定(bind)接口(interface)?

android - Dagger 2 - 使用自定义范围时依赖不是单例

java - picasso 不显示来自 firebase 的图像

android - 想在 viewpager 上滑动播放声音

android - (Android、iOS、Windows、Linux)服务器轮询、推送、实现服务器

java - 同一个库的多个版本

android - Dagger 2 注入(inject)参数

android - Dagger 2 - 组件作用域编译错误

android - tileMode ="repeat"在 Android 4.1 果冻 bean 上损坏