作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我关注 this文档以了解 LiveData 和 ViewModel。在文档中,ViewModel 类有这样的构造函数,
public class UserModel extends ViewModel {
private MutableLiveData<User> user;
@Inject UserModel(MutableLiveData<User> user) {
this.user = user;
}
public void init() {
if (this.user != null) {
return;
}
this.user = new MutableLiveData<>();
}
public MutableLiveData<User> getUser() {
return user;
}
}
但是,当我运行代码时,我得到了异常:
final UserViewModelviewModel = ViewModelProviders.of(this).get(UserViewModel.class);
Caused by: java.lang.RuntimeException: Cannot create an instance of class UserViewModel Caused by: java.lang.InstantiationException: java.lang.Class has no zero argument constructor
最佳答案
在我使用 HILT 的情况下,在具有 ViewModel 的 Fragment 上方缺少一个注释:@AndroidEntryPoint
@AndroidEntryPoint
class BestFragment : Fragment() {
....
当然,在您的 ViewModel 类中,您还需要使用 AnnotateHILT 需要什么:@ViewModelInject
class BestFragmentViewModel @ViewModelInject constructor(var userManager: UserManager) : ViewModel() {
....
}
关于Android ViewModel 没有零参数构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44194579/
我是一名优秀的程序员,十分优秀!