gpt4 book ai didi

android - 如何修复 ViewPager2 中的 'Design assumption violated' 错误?

转载 作者:搜寻专家 更新时间:2023-11-01 09:19:55 109 4
gpt4 key购买 nike

我正在使用 ViewPager2、Kotlin 和 AndroidX。当适配器不在索引 0 处并且我更改适配器列表并将当前项设置为索引 0 时,将引发异常。

java.lang.IllegalStateException: Design assumption violated.
at androidx.viewpager2.widget.ViewPager2.updateCurrentItem(ViewPager2.java:538)
at androidx.viewpager2.widget.ViewPager2$4.onAnimationsFinished(ViewPager2.java:518)
at androidx.recyclerview.widget.RecyclerView$ItemAnimator.isRunning(RecyclerView.java:13244)
at androidx.viewpager2.widget.ViewPager2.onLayout(ViewPager2.java:515)
at android.view.View.layout(View.java:15596)

在 ViewPager2 的第 537 行有一个 if 导致了异常:

        // Extra checks verifying assumptions
// TODO: remove after testing
View snapView1 = mPagerSnapHelper.findSnapView(mLayoutManager);
View snapView2 = mLayoutManager.findViewByPosition(snapPosition);
if (snapView1 != snapView2) {
throw new IllegalStateException("Design assumption violated.");
}

这就是我更新适配器列表的方式:

adapter.list = newList
adapter.notifyDataSetChanged()
viewpager.setCurrentItem(0, true)

它仅在 smoothScroll 设置为 true 时发生

我错过了什么?

编辑:我正在使用 com.google.android.material:material:1.1.0-alpha08

中提供的 androidx.viewpager2.widget.ViewPager2

最佳答案

我在 ViewPager2 配置更改时遇到了同样的问题。我正在使用:

implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.viewpager2:viewpager2:1.0.0-beta03'

在我的例子中,我覆盖了我的 FragmentStateAdapter 类中的 getItemId() 方法。当我摆脱我的 getItemId() 方法时,“IllegalStateException:违反设计假设”错误不再存在! :-)

关于android - 如何修复 ViewPager2 中的 'Design assumption violated' 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57017226/

109 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com