代码之家  ›  专栏  ›  技术社区  ›  Uma Achanta

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

  •  0
  • Uma Achanta  · 技术社区  · 6 年前

    我是科特林的新手。 这是我想在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)

    谢谢

    2 回复  |  直到 6 年前
        1
  •  0
  •   Guru Karthi R    6 年前
    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目的的应用程序实例。并帮助您避免拉丁语属性。

        2
  •  0
  •   shkschneider blazzerbg    6 年前
    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