Kotlin 如何实现MVVM

Kotlin 如何实现MVVM,kotlin,mvvm,android-livedata,android-viewmodel,Kotlin,Mvvm,Android Livedata,Android Viewmodel,我想使用MVVM架构,我有一个视图寻呼机,它有两个片段。每个片段都有一个RecyclerView。我创建了一个视图模型类,该类扩展了AndroidViewModel,因为我需要将上下文传递到我的存储库,该存储库从API类获取数据,该API类使用volley从服务器获取数据。当我旋转手机时,我的ViewModel类不会被调用,但根据我设置的日志,当我旋转手机时,似乎一切都会重新开始 可以吗?还是我有什么不对劲 这是我的片段代码: val viewModel: Fragment1ViewModel

我想使用MVVM架构,我有一个视图寻呼机,它有两个片段。每个片段都有一个RecyclerView。我创建了一个视图模型类,该类扩展了AndroidViewModel,因为我需要将上下文传递到我的存储库,该存储库从API类获取数据,该API类使用volley从服务器获取数据。当我旋转手机时,我的ViewModel类不会被调用,但根据我设置的日志,当我旋转手机时,似乎一切都会重新开始

可以吗?还是我有什么不对劲

这是我的片段代码:

val viewModel: Fragment1ViewModel =
        ViewModelProviders.of(this).get(Fragment1ViewModel(Application())::class.java)


    viewModel.getData().observe(this, Observer {
        Log.i("Log","data is Loaded in activity")
    })
这是ViewModel类别代码:

class Fragment1ViewModel(application: Application) : AndroidViewModel(application) {
private val repository=Repository(application)

fun getData():LiveData<String>{
    Log.i("Log","get data in view model")
    return repository.getListItem()
}
这是我旋转手机时的日志

 I/Log: get data in view model
 I/Log: ServerFetch Successfully
 I/Log: data is Loaded in activity

您应该在视图模型的实例化时获取它

视图模型:

class Fragment1ViewModel(application: Application) : AndroidViewModel(application) {
    private val repository = Repository(application)
    val data = repository.getListItem()
}
片段:

viewModel.data.observe(this, Observer {
    Log.i("Log","data is Loaded in activity")
})
 I/Log: get data in view model
 I/Log: ServerFetch Successfully
 I/Log: data is Loaded in activity
class Fragment1ViewModel(application: Application) : AndroidViewModel(application) {
    private val repository = Repository(application)
    val data = repository.getListItem()
}
viewModel.data.observe(this, Observer {
    Log.i("Log","data is Loaded in activity")
})