在ViewModel实例类的构造函数中调用Super:Kotlin



我是Kotlin的新手。这是我想在kotlin中转换的Java代码

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(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用途。并帮助您避免拉丁美洲属性。

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

最新更新