Android 动态充气行,但设备方向更改时会出现奇怪的行为
我试图动态地膨胀我的行,但是当我改变平板电脑的方向时,我会将所有内容都取消选中,复选框名称将填充最后一行的信息。例如,supose I有两个复选框(两行),第一个复选框说“你好”,第二个复选框说“再见”。如果我旋转平板电脑,我会看到第一个和第二个复选框,其名称为“再见”,所有内容都未选中Android 动态充气行,但设备方向更改时会出现奇怪的行为,android,android-tablelayout,android-orientation,Android,Android Tablelayout,Android Orientation,我试图动态地膨胀我的行,但是当我改变平板电脑的方向时,我会将所有内容都取消选中,复选框名称将填充最后一行的信息。例如,supose I有两个复选框(两行),第一个复选框说“你好”,第二个复选框说“再见”。如果我旋转平板电脑,我会看到第一个和第二个复选框,其名称为“再见”,所有内容都未选中 <ScrollView android:layout_width="match_parent" android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<TableLayout
android:id="@+id/tableLayoutList"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</ScrollView>
有人知道我为什么有这种奇怪的行为吗?。还请注意,我在日志猫中放置了一个Log.e,用于打印正在进行的操作。每次我改变设备的方向时,我都会听到“你好”和“再见”,但setText似乎无法正常工作
请帮助,我已经处理这个问题好几个小时了,我不明白:(当您更改设备方向时,活动将被销毁并重新创建。您应该使用
onSaveInstanceState
回调以保存当前的UI数据。并使用onCreate还原它:
if (savedInstanceState == null) {
// first run
} else {
// not first run
}
我知道这一点,对于复选框的选择,你是对的,但是复选框的setText呢。为什么它不能正常工作?如果重新创建视图,它应该显示“你好”,“再见”无论我如何处理方向。是否从savedInstanceState恢复状态?应该,因为这就是它的用途。仅当光标是第一次运行或在滚动视图中发生更改时,才应使用光标。在复选框中保存表示文本的字符串数组。还应保存一个同步布尔数组,用于重新检查是否选中了复选框(true)。然后在onCreate中,从SaveInstanceState检索这些值。我刚刚做了,并且成功了。你完全正确!!。非常感谢:)。
onSaveInstanceState
if (savedInstanceState == null) {
// first run
} else {
// not first run
}