我有一个带有一个 RadioGroup 的自定义组件,该组件有两个 RadioButton、ids@+id/radioButton1
和@+id/radioButton2
. 另一方面,有一个带有五个选项卡的 TabActivity。在每个选项卡上,此组件都使用了多次。
这是问题所在,当方向更改并重新创建活动时,所有 RadioButton 都加载了相同的 attrs,这包括android:text
,android:margin
甚至是我创建的样式化的 attrs。所有具有相同 id 的 CheckBox 也会发生这种情况。
我花了一些时间试图找出为什么会发生这种情况,并得出结论认为 android 是在 onRestoreInstanceState 中这样做的。如果我评论调用 super 方法的行,它可以正常工作。
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// super.onRestoreInstanceState(savedInstanceState);
}
这是应该的吗?或者可以做些什么来导致这种情况?
我猜这不是正常行为,因为当创建自定义视图时,它会使用具有相同 ID 的相同视图膨胀相同的布局。因此,不可能每次都实例化一个新的自定义视图,为其子视图生成不同的 id。使用上面或android:configChanges
清单上的代码对我来说似乎是一个不好的解决方法。因此,任何帮助表示赞赏。