Android 视图模型 class 没有零参数构造函数,片段中的实例化异常
Android view model class has no zero argument constructor,Instantiation Exception in fragment
我有一个视图模型class,我需要在片段中实例化它。
但是我得到了:
java.lang.RuntimeException: Cannot create an instance of class com.example.project.favourites.FavViewModel
和
Caused by: java.lang.InstantiationException: java.lang.Class<com.example.project.favourites.FavViewModel> has no zero argument constructor
这是导致崩溃的行:
favViewModel= new ViewModelProvider(this).get(FavViewModel.class);
(This line is within onViewCreated in fragment)
请帮忙!!!!!
下面是 FavViewModel Class
public class FavViewModel extends AndroidViewModel {
private FavRepository repository;
private LiveData<List<FavItem>> allFav;
public FavViewModel(@NonNull Application application) {
super(application);
repository=new FavRepository(application);
allFav=repository.getAllFav();
}
public void insert(FavItem favItem){
repository.insert(favItem);
}
public void delete(FavItem favItem){
repository.delete(favItem);
}
public void deleteAll(){
repository.deleteAll();
}
public LiveData<List<FavItem>> getAllFav(){
return allFav;
}
}
您可以使用以下注释
来注释您的模型class
@NoArgsConstructor
使用此 linklombok
,您将对 lombok 、 NoArgsConstructor 和更多注释有更多了解
尝试使用这个...
像这样初始化ViewModel
。您还需要使用 ViewModelProvider
构造函数传递 ViewModelFactory
。
favViewModel = new ViewModelProvider(this,
new ViewModelProvider.AndroidViewModelFactory(getApplication())).get(FavViewModel.class);
希望这对您有所帮助。随时要求澄清...
我有一个视图模型class,我需要在片段中实例化它。 但是我得到了:
java.lang.RuntimeException: Cannot create an instance of class com.example.project.favourites.FavViewModel
和
Caused by: java.lang.InstantiationException: java.lang.Class<com.example.project.favourites.FavViewModel> has no zero argument constructor
这是导致崩溃的行:
favViewModel= new ViewModelProvider(this).get(FavViewModel.class);
(This line is within onViewCreated in fragment)
请帮忙!!!!!
下面是 FavViewModel Class
public class FavViewModel extends AndroidViewModel {
private FavRepository repository;
private LiveData<List<FavItem>> allFav;
public FavViewModel(@NonNull Application application) {
super(application);
repository=new FavRepository(application);
allFav=repository.getAllFav();
}
public void insert(FavItem favItem){
repository.insert(favItem);
}
public void delete(FavItem favItem){
repository.delete(favItem);
}
public void deleteAll(){
repository.deleteAll();
}
public LiveData<List<FavItem>> getAllFav(){
return allFav;
}
}
您可以使用以下注释
来注释您的模型class@NoArgsConstructor
使用此 linklombok
尝试使用这个...
像这样初始化ViewModel
。您还需要使用 ViewModelProvider
构造函数传递 ViewModelFactory
。
favViewModel = new ViewModelProvider(this,
new ViewModelProvider.AndroidViewModelFactory(getApplication())).get(FavViewModel.class);
希望这对您有所帮助。随时要求澄清...