从ViewModel访问strings.xml

Rob*_*egg 3 android android-context dagger-2 android-viewmodel android-architecture-components

我正在使用Dagger 2 DataBindng和新的Android Lifecycle组件,这些组件具有ViewModels

在我的内部,ViewModel如何访问我的strings.xml?我在想,在第一,注入ContextviewModel,然而,这只会泄漏内存。

还有其他方法吗?

azi*_*ian 6

有一个AndroidViewModel,它接收Application实例作为参数。

从文档:

应用程序上下文感知ViewModel

子类必须具有一个接受Application作为唯一参数的构造函数。

您可以strings.xml使用该参数来检索字符串。


链接中的仓库使用ViewModel而不是AndroidViewModel。如果我将ViewModel扩展为使用AndroidViewModel并包含应用程序 - 如果可以的话,它将尝试注入MyApplication而不是Application

我已经检查了GithubBrowserSample。下面是如何UserViewModel看起来像:


    public class UserViewModel extends ViewModel {
        ...
        @Inject
        public UserViewModel(UserRepository userRepository, RepoRepository repoRepository) {
            ...
        }
        ...
    }

这是我所做的更改:


    public class UserViewModel extends AndroidViewModel {
        ...
        @Inject
        public UserViewModel(Application application, UserRepository userRepository, RepoRepository repoRepository) {
            super(application);
            ...
        }
        ...
    }

  • 实际上,我仍然有一个问题。由于使用Dagger,因此在模型中使用构造函数注入。这意味着我不能使用AndroidViewModel。有任何想法吗? (2认同)