按照MVVM设计模式中Android的建议,ViewModal不能接受View的引用,但是在Facebook登录中,我们通过Activity的onActivityResult()方法获得响应。
因此,如果我们的ViewModal具有用于Facebook登录的方法,那么我必须将Activity的引用传递给它,以便我可以通过Activity的onActivityResult()方法返回结果。
有人会建议如何按照MVVM设计模式处理Facebook登录
答案 0 :(得分:0)
ViewModels不应保留对活动,片段或上下文的引用。
这意味着您可以在参数中传递活动或上下文,但不应存储该引用。
在ViewModel中创建一个函数
fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?,activity? : Activity) {
//do your work
}
并在您的活动中调用该函数。
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
yourVm.onActivityResult(requestCode: Int, resultCode: Int, data: Intent?,this)
}