У меня есть набор привязки данных, и я использую адаптер привязки ViewPager для переключения между экранами:
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)
и go на следующую страницу и в какой-то момент покидаю экран, когда я возвращаюсь, BindingAdapter
автоматически вызывается с true
что делает пейджер go на следующую страницу. так что в основном во все последующие моменты времени пейджер открывается на втором экране.
Не уверен, имеет ли это какое-либо отношение к жизненному циклу, но если это помогает, это то, что у меня есть
binding.lifecycleOwner = viewLifecycleOwner
Любая идея, как это исправить без каких-либо уродливых обходных путей?