Android ViewModel在活动中设置数据并在片段中使用
我正在尝试不实现ViewModel,请帮助我了解这一点。我希望在活动中设置数据并在片段中使用它 主要活动:Android ViewModel在活动中设置数据并在片段中使用,android,android-fragments,android-viewmodel,Android,Android Fragments,Android Viewmodel,我正在尝试不实现ViewModel,请帮助我了解这一点。我希望在活动中设置数据并在片段中使用它 主要活动: class MainActivity : AppCompatActivity(),ListFragment.OnFragmentInteractionListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) s
class MainActivity : AppCompatActivity(),ListFragment.OnFragmentInteractionListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
var viewModel = ViewModelProvider.NewInstanceFactory().create(TapupuViewModel::class.java)
viewModel.setData(movieList)
}
}
视图模型:
class TapupuViewModel : ViewModel() {
val message = MutableLiveData<ArrayList<Movie>>()
fun setData(msg:ArrayList<Movie>){
message.setValue(msg)
}
}
class MyFragment : Fragment() {
override fun onViewCreated() {
resultLiveData.observe(this, Observer {
//update UI
})
}
}
我可能在那里做错了什么。您能帮我吗?查看ViewModel存储库房间Dao
视图是:片段/活动
无需要共享任何ViewModels或。。。在你的活动和片段之间
class MyRepository {
private val dao: YourDao = ...
fun getModelFromLocal(): LiveData/RxJava/List<Model> = dao.getModel()
}
每个片段/活动都有自己的实现。Hmmm,有点不清楚您想要实现什么?将数据从活动发送到片段?或者在他们之间共享一个ViewModel?我有两个片段的活动,它们一个叠在另一个之上。我正在活动中从DB加载数据,然后我希望在两个片段中都使用它。这是我第一次尝试用Kotlin实现ViewModel,可能是我的代码中有错误。您是否遇到运行时错误?请添加错误日志。@AmitGupta moviesaraylist在中为空fragment@Dim如果要使用MVVM,则需要实现存储库模式以从数据库中获取数据。您想要实现的不是逻辑上的实现,而是绝对可行的。
private val repository: MyRepository = ...
val resultLiveData = MutableLiveData<SomeModelToShowOnUI>()
fun onUISentEventToLoadData() {
val data: SomeModelToShowOnUI = repository.getModelFromLocal()
resultLiveData.value = data
}
class MyFragment : Fragment() {
override fun onViewCreated() {
resultLiveData.observe(this, Observer {
//update UI
})
}
}