简体   繁体   English

有没有办法使用 Dagger2 将 object 注入接口

[英]Is there a way to inject an object into an interface using Dagger2

In my activity class, I can inject a ViewModel using:在我的活动 class 中,我可以使用以下方法注入 ViewModel:

@Inject
GameViewModel gameViewModel;

And it works fine.它工作正常。 The problem is, that I want to use the object in an interface:问题是,我想在接口中使用 object:

public interface SharedData {
    @Inject
    GameViewModel gameViewModel;

    default void createNewUser(User authenticatedUser) {
        gameViewModel.userLiveData.observe(this, user -> {
            Log.d("TAG", user.name);
        });
    }
}

Is this even possible?这甚至可能吗? Because I get:因为我得到:

Variable gameViewModel might not have been initialized变量 gameViewModel 可能尚未初始化

Isn't Dagger supposed to do that? Dagger不应该这样做吗?

You cannot use fields in an interface.您不能在界面中使用字段。 To use fields, you should be using a class, or an abstract class.要使用字段,您应该使用 class 或抽象 class。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM