【发布时间】:2022-01-11 16:57:25
【问题描述】:
我在片段上调用了一个 livedata 对象。第一次工作正常,它只触发一次,但第二次进入片段它触发两次,不明白为什么。
这就是我所说的观察:
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
return inflater.inflate(R.layout.activity_train_with_famous_detail, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setupUi(view)
(activity as TrainingWithFamousActivity).hideToolbar()
setupListCategoryVideos(view)
viewModel.getVideosData()
viewModel.videosData.observe(viewLifecycleOwner, Observer {
//second time I enter the fragment it triggers his twice
videoCategoryAdapter.loadItems(it)
})
viewModel.videoSelected?.let { loadTrainWithFamousDetailsData(it) }
}
这是我的视图模型中的方法:
val videosData = MutableLiveData<List<DtoCelebrityResource>>()
fun getVideosData() {
showLoader()
trainingWithFamousUseCase
.build(this)
.executeWithError({
videosData.value = it
hideLoader()
}, {
hideLoader()
})
}
【问题讨论】:
-
您确定两次接收 LiveData 的是同一个片段实例吗?片段是否可能存在两次,每个实例都接收到 LIveData?
-
第三次输入会触发三次吗?
标签: android kotlin mvvm android-livedata