Я использую ViewPager2
, и у меня есть кнопка, которая изменяет текущую страницу на вторую, например:
button_next.setOnClickListener {
setup_view_pager.currentItem = 1
}
Работает до тех пор, пока страница не будет проведена вручнуюи после этого он выдает эту ошибку:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: rs.ac.bg.matf.risk.matfasistent, PID: 32028
java.lang.IllegalStateException: Expected position values between -1 and 1.
at androidx.core.util.Preconditions.checkState(Preconditions.java:96)
at androidx.viewpager2.widget.MarginPageTransformer.transformPage(MarginPageTransformer.java:56)
at androidx.viewpager2.widget.PageTransformerAdapter.onPageScrolled(PageTransformerAdapter.java:72)
at androidx.viewpager2.widget.CompositeOnPageChangeCallback.onPageScrolled(CompositeOnPageChangeCallback.java:59)
at androidx.viewpager2.widget.ScrollEventAdapter.dispatchScrolled(ScrollEventAdapter.java:407)
at androidx.viewpager2.widget.ScrollEventAdapter.onScrolled(ScrollEventAdapter.java:188)
at androidx.recyclerview.widget.RecyclerView.dispatchOnScrolled(RecyclerView.java:5100)
at androidx.recyclerview.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:5265)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1012)
at android.view.Choreographer.doCallbacks(Choreographer.java:824)
at android.view.Choreographer.doFrame(Choreographer.java:756)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:998)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6745)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:495)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Это происходит только при этих щелчках, все отлично работает, когда фрагменты проведены вручную.Ни одно из мест трассировки ошибок не указывает на мой код: (
Это мой адаптер для ViewPager:
class SetupAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle)
: FragmentStateAdapter(fragmentManager, lifecycle) {
override fun getItemCount() = 3
override fun createFragment(position: Int): Fragment {
return when (position) {
0, 1, 2 -> StudentSelectionFragment()
else -> throw IllegalStateException()
}
}
}
И это весь соответствующий код Activity:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val adapter = SetupAdapter(supportFragmentManager, lifecycle)
setup_view_pager.orientation = ViewPager2.ORIENTATION_HORIZONTAL
setup_view_pager.adapter = adapter
setup_view_pager.setPageTransformer(MarginPageTransformer(1500))
button_next.setOnClickListener {
setup_view_pager.setCurrentItem(1, true)
}
}