在 ViewModel 实例的构造函数中调用 super class : Kotlin
call super in constructor of ViewModel instance class : Kotlin
我是 Kotlin 新手。
这是我的 java 代码,我想在 kotlin
中转换它
public class FavouritesViewModel extends AndroidViewModel {
private FavouritesDBHelper mFavHelper;
private ArrayList<Favourites> mFavs;
FavouritesViewModel(Application application) {
super(application);
mFavHelper = new FavouritesDBHelper(application);
}
}
但我在构造函数中遇到编译时错误
对我尝试的代码进行编码:
public class FavoritesDataViewModel:ViewModel{
private lateinit var mFavHelper: DatabaseHelper
private lateinit var mfav:ArrayList<Favorites>
public constructor(application: Application): super(application){
mFavHelper = DatabaseHelper(application)
}
}
在 super(application)
出现错误
谢谢
public class FavoritesDataViewModel:AndroidViewModel{
private lateinit var mFavHelper: DatabaseHelper
private lateinit var mfav:ArrayList<Favorites>
public constructor(application: Application): super(application){
mFavHelper = DatabaseHelper(application)
}
}
这解决了我的问题,我正在使用 AndroidViewModel
而不是 ViewModel
public class FavoritesDataViewModel(application: Application):AndroidViewModel(application){
private var mFavHelper: DatabaseHelper
private lateinit var mfav:ArrayList<Favorites>
init{
mFavHelper = DatabaseHelper(getApplication<Application>())
}
public constructor(application: Application): super(application){
mFavHelper = DatabaseHelper(application)
}
}
这将帮助您调用超级调用来传递参数,并更安全地访问用于 viewModel 目的的应用程序实例。并帮助您避免 latinit 属性。
我是 Kotlin 新手。 这是我的 java 代码,我想在 kotlin
中转换它public class FavouritesViewModel extends AndroidViewModel {
private FavouritesDBHelper mFavHelper;
private ArrayList<Favourites> mFavs;
FavouritesViewModel(Application application) {
super(application);
mFavHelper = new FavouritesDBHelper(application);
}
}
但我在构造函数中遇到编译时错误
对我尝试的代码进行编码:
public class FavoritesDataViewModel:ViewModel{
private lateinit var mFavHelper: DatabaseHelper
private lateinit var mfav:ArrayList<Favorites>
public constructor(application: Application): super(application){
mFavHelper = DatabaseHelper(application)
}
}
在 super(application)
谢谢
public class FavoritesDataViewModel:AndroidViewModel{
private lateinit var mFavHelper: DatabaseHelper
private lateinit var mfav:ArrayList<Favorites>
public constructor(application: Application): super(application){
mFavHelper = DatabaseHelper(application)
}
}
这解决了我的问题,我正在使用 AndroidViewModel
而不是 ViewModel
public class FavoritesDataViewModel(application: Application):AndroidViewModel(application){
private var mFavHelper: DatabaseHelper
private lateinit var mfav:ArrayList<Favorites>
init{
mFavHelper = DatabaseHelper(getApplication<Application>())
}
public constructor(application: Application): super(application){
mFavHelper = DatabaseHelper(application)
}
}
这将帮助您调用超级调用来传递参数,并更安全地访问用于 viewModel 目的的应用程序实例。并帮助您避免 latinit 属性。