【发布时间】:2017-06-10 21:26:27
【问题描述】:
我根据加载的配置以编程方式将 x 数量的按钮添加到我的视图中(例如,我们只使用 10 个)。我创建 10 就好了,当我不设置 ID 或使用 Android 的 generateId() 函数时它可以工作,但我想使用我的迭代器 (i) 来设置 id,以便每个值迭代匹配它创建的按钮
即
(for i=0; i<10; i++)
{
button.setId(i);
}
我希望这样当我切换片段时,它会保存按钮并且我不会使用 onCreate 重新创建它们。就目前而言,我收到此错误:
01-25 17:46:18.197 13236-13236/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.CompoundButton$SavedState
at android.widget.CompoundButton.onRestoreInstanceState(CompoundButton.java:379)
【问题讨论】:
-
你为什么不用
button.setTag("yourID") -
好吧,如果我给它一个 ID,它不会保存它是在 Saved Bundle 中创建的事实吗?否则,我每次切换回片段时只会创建 10 个新按钮。
-
我认为您的问题是将相同的 id 设置为另一个视图。确保您的活动对清单中的特定情况进行了 configChanges,并在 onConfigChange 中处理您的解决方案。
标签: java android dynamic error-handling