在 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 属性。