【发布时间】:2020-08-06 15:25:36
【问题描述】:
我设置了 DataBinding 并使用 ViewPager BindingAdapter 在屏幕之间切换:
BindingAdapter
@BindingAdapter("app:nextPageListener") fun nextPageListener(viewPager: ViewPager, next: Boolean?) {
next ?: return
if (next) viewPager.nextPage()
else viewPager.previousPage()
}
View Pager
<ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
app:nextPageListener="@{viewModel.nextPageListener}"
/>
viewModel.nextPageListener
private val _nextPageListener = MutableLiveData<Boolean>()
val nextPageListener: LiveData<Boolean> get() = _nextPageListener
我的问题是,如果我调用 _nextPageListener.postValue(true) 并转到下一页并在某个时候离开屏幕,当我回来时,BindingAdapter 会自动调用 true,这会使寻呼机转到下一页.所以基本上在以下所有时间寻呼机都在第二个屏幕上打开。
不确定它是否与生命周期有关,但如果有帮助,这就是我所拥有的
binding.lifecycleOwner = viewLifecycleOwner
知道如何在没有一些丑陋的解决方法的情况下解决这个问题吗?
【问题讨论】:
标签: android mvvm data-binding android-databinding android-livedata