【发布时间】:2020-05-08 11:48:19
【问题描述】:
我的应用程序中有一个 viewPager,其中包含 3 个片段。 第一个片段在单击 recyclerview 项目时有一个 recyclerview 我将一些数据传递给另一个片段,该片段不是 viewpager 片段的一部分。我正在使用最新的视图模型逻辑来实现此功能,并且根据许多网站提到的步骤,我正在执行以下操作。
-
创建扩展视图模型的单独类
class MovieObservable : ViewModel() { private val selectedMovieID = MutableLiveData<Int>() fun setSelectedMovieID(id : Int){ selectedMovieID.value = id } fun getSelectedMovieID(): MutableLiveData<Int> { return selectedMovieID } -
在oncreateView Fragment中初始化viewmodel
private lateinit var mViewModel : MovieObservable mViewModel = ViewModelProvider(this).get(MovieObservable::class.java) -
现在从我的 RecyclerView 我已经实现了点击监听器并在我的片段中实现了它并用位置和值覆盖了 onclick 事件
override fun onClickNowPlaying(position: Int, view: View, result: Result) { System.out.println("now playing ID" + result.id) mViewModel.setSelectedMovieID(result.id) val newFragment = MovieDetailsFragment() val transaction = activity?.supportFragmentManager?.beginTransaction() transaction?.replace(R.id.mainLayout, newFragment, "NewFragment") transaction?.addToBackStack(null) transaction?.commit() } -
我在下面的详细信息片段中添加了观察值的逻辑
private lateinit var mViewModel : MovieObservable mViewModel = ViewModelProvider(this).get(MovieObservable::class.java) mViewModel.getSelectedMovieID().observe(viewLifecycleOwner, Observer {getmydata-> System.out.println("in the next fragment " + getmydata) })
所以所有逻辑都完成了将数据从一个片段传递到另一个片段,但问题是我没有获取详细信息片段上的数据。 我在这里错过了什么。
【问题讨论】:
标签: android android-fragments android-recyclerview android-viewmodel