FragmentStateAdapter抛出
java.lang.IllegalStateException: Design Assumption 违反了,
当设备旋转时。如何解决此问题?
private inner class PagerAdapter : FragmentStateAdapter(this) {
private val ids = LongSparseArray<Media>()
override fun getItemCount(): Int = adapter.itemCount
override fun getItemId(position: Int): Long {
return adapter.source!![position].time
}
override fun containsItem(itemId: Long): Boolean {
return ids[itemId] != null
}
}
例外
java.lang.IllegalStateException: Design assumption violated.
at androidx.viewpager2.adapter.FragmentStateAdapter.placeFragmentInViewHolder(FragmentStateAdapter.java:270)
at androidx.viewpager2.adapter.FragmentStateAdapter.onViewAttachedToWindow(FragmentStateAdapter.java:259)
at androidx.viewpager2.adapter.FragmentStateAdapter.onViewAttachedToWindow(FragmentStateAdapter.java:68)
此问题现已在ViewPager2
中修复
您需要使用版本 1.0.0-beta03
更新 ViewPager2
的依赖项
dependencies {
implementation 'androidx.viewpager2:viewpager2:1.0.0-beta03'
}
错误修复
我找到了解决办法。显然,为了正确恢复片段,您必须在other中的配置发生更改后恢复FragmentStateAdapter的状态。
拯救国家
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
model.addState(IDS, pagerAdapter.ids)
model.addState(LIST, (adapter.source as ListAdapterSource).getList())
}
恢复状态
private inner class PagerAdapter : FragmentStateAdapter(this) {
val ids: LongSparseArray<Media> = model.getState(IDS) ?: LongSparseArray()
...
}
我自己无法复制这个问题,但我注意到这个问题是在小米米9运行的时候出现的。以下是我使用的和版本: 下面是StackTrace: 我不确定这是从我的代码中触发的,因为stacktrace不是很清楚。此外,根据Google Issuetracker,这个问题已经在viewpager2:1.0.0-beta03:https://Issuetracker.Google.com/issues/13424654
当我想从其他线程向GUI添加节点时,我遇到了问题。它抛出非法状态异常,我不知道如何修复它。 我只是加载我的。FXML文件到GUI与此控制器,当程序启动时,它运行Thread负责与服务器(clientTH.start();)通信,一切正常。但是当服务器在初始化后发送数据时。并且我希望将此数据添加到我的仪表板,我像以前一样使用方法公共同步无效addToDashBoard(窗格根),但它抛出java.l
我的验证器类 当我没有选择任何选项就提交表单时, 无法将类型java.lang.String的属性值转换为属性类别所需的类型com.main.java.category;嵌套异常为java.lang.IllegalStateException:无法将类型[java.lang.String]的值转换为属性类别所需的类型[com.main.java.category]:找不到匹配的编辑器或转换策略 这
Mario中所有的配置都可以在 Mario 全局唯一对象完成,将它设计为单例。 要运行起来整个框架,Mario对象是核心,看看里面都需要什么吧! 添加路由 读取资源文件 读取配置 等等 由此我们简单的设计一个Mario全局对象: /** * Mario * @author biezhi * */ public final class Mario { /** * 存放所有
Activity中有一个RecyclerView,通过getGroupList()获取数据,这是一个异步方法。 适配器,通过setData方法更新数据,当调用setData()notifyDataSetChanged()时,抛出java。语言:addInArray 可丢弃信息: addInArray被调用,这=android。支持v7.widget。RecyclerView{4295f4f0 VF
我一直在尝试创建一个批处理文件,将笔记本电脑设置为高功率设置运行minecraft,然后在minecraft关闭时将电源设置设置为节能模式。我正试图发射装有我的techniclauncher的雷艇,目前我的蝙蝠看起来像这样。 启动电源 /s8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c 启动C:\Users\Eric\Downloads\TechnicLauncher。e