我正在使用Dagger 2 DataBindng
新的 Android 生命周期组件,它们具有ViewModels
.
在我的内部我ViewModel
怎么能访问我的strings.xml?起初我在想,将 aContext
注入viewModel
,但是,这只会泄漏内存。
还有其他方法吗?
我正在使用Dagger 2 DataBindng
新的 Android 生命周期组件,它们具有ViewModels
.
在我的内部我ViewModel
怎么能访问我的strings.xml?起初我在想,将 aContext
注入viewModel
,但是,这只会泄漏内存。
还有其他方法吗?
有一个AndroidViewModel
,它接收Application
实例作为参数。
来自文档:
应用程序上下文感知ViewModel。
子类必须有一个接受Application作为唯一参数的构造函数。
strings.xml
您可以使用该参数检索字符串。
但是,链接中的 repo 使用ViewModel而不是 AndroidViewModel。如果我扩展我的 ViewModel 以使用AndroidViewModel并包含Application -如果这有意义,它会尝试注入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);
...
}
...
}