当前位置: 首页 > 知识库问答 >
问题:

如何将存储库注入ViewModel?

柯振濂
2023-03-14

我正在使用匕首2,我有一个定义如下的DiComponent

@Singleton
@Component(modules = {
        AndroidSupportInjectionModule.class,
        ApplicationModule.class,
        PreferenceModule.class,
        RetrofitModule.class,
        RoomModule.class,
})
public interface DiComponent  {

    void inject(SplashScreen activity);
    void inject(Home activity);

    void inject(FYViewModel viewModel);
    void inject(CFViewModel viewModel);
}

这是FYViewModel的。类

public class FYViewModel extends AndroidViewModel {
    private static final String TAG = FYViewModel.class.getSimpleName();

    @Inject
    public FYRepository mRepository;

    private LiveData<List<Post>> mPostList;

    public FYViewModel(Application application) {
        super(application);
        Log.d(TAG, "FYViewModel: " + mRepository);
//        mPostList = mRepository.getAllPosts();
    }

    public LiveData<List<Post>> getAllPosts() {
        return mPostList;
    }

    public void fetchNextData(int page) {
        mRepository.fetchNextPosts(page);
    }

}

但是,mRepository变量始终为空。

如何使用匕首2将Repositroy注入我的ViewModel?

共有1个答案

程招
2023-03-14

我建议为此建立一个ViewModel工厂

以下是一本好书:

https://proandroiddev.com/viewmodel-with-dagger2-architecture-components-2e06f06c9455

设置它,为repository类添加一个@Provides,然后您可以注入您的存储库。

 类似资料:
  • 问题内容: 我需要将两个对象注入。其中一个是的实例,我得到这样的信息: 那么如何在我的services.yml中声明呢?这是服务: 问题答案: 我找到了此链接,这对我有用:

  • 我正在用Symfony制作简单的应用程序。我在这里配置了服务 我的服务使用存储库(例如,评论服务使用评论存储库),这里是的构造函数 性质 构造函数: 当我试图运行我的应用程序我得到这个错误 PHP致命错误:未捕获Symfony\Component\DependencyInjection\Exception\AutowiringFailedException:无法自动连线服务“AppBundle\R

  • Hy各位 我有我的麻烦的简化版本。我正在尝试运行我的应用程序,但它失败了,因为存储库不能被注入。我已经尝试将存储库注释为服务,并添加要扫描的存储库包,但都没有效果。有人能帮我吗? 我有个例外 描述: br中的字段topicRepository。通用域名格式。阿鲁拉。控制器。TopicController需要类型为“br”的bean。通用域名格式。阿鲁拉。存储库。找不到TopicRepository

  • 问题内容: 当我将youtube嵌入的iframe保存到我的数据库中时,在我回忆起它时会添加一串斜线。像下面这样。 它以长文本类型存储。当我从数据库中调用斜杠时会删除斜杠或防止斜杠首先存储的内容 问题答案: 如果使用PHP,则可以使用stripslashes()。 另外,您也可以对代码进行base64编码/解码。

  • 我有一个运行时账户库(我没有使用数据库),我希望能够在运行时注册新账户。我有一个专门的控制器。 除此之外,我有一个需要身份验证的控制器。请注意,我没有任何图形形式,只有API,因此身份验证必须来自HTTP请求。 RegisterAccountController.java:保存到存储库并返回JSON密码 AccountService。java:将用户保存到本地运行时存储库 AccountRepos