Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 动态充气行,但设备方向更改时会出现奇怪的行为_Android_Android Tablelayout_Android Orientation - Fatal编程技术网

Android 动态充气行,但设备方向更改时会出现奇怪的行为

Android 动态充气行,但设备方向更改时会出现奇怪的行为,android,android-tablelayout,android-orientation,Android,Android Tablelayout,Android Orientation,我试图动态地膨胀我的行,但是当我改变平板电脑的方向时,我会将所有内容都取消选中,复选框名称将填充最后一行的信息。例如,supose I有两个复选框(两行),第一个复选框说“你好”,第二个复选框说“再见”。如果我旋转平板电脑,我会看到第一个和第二个复选框,其名称为“再见”,所有内容都未选中 <ScrollView android:layout_width="match_parent" android:layout_height="match_parent">

我试图动态地膨胀我的行,但是当我改变平板电脑的方向时,我会将所有内容都取消选中,复选框名称将填充最后一行的信息。例如,supose I有两个复选框(两行),第一个复选框说“你好”,第二个复选框说“再见”。如果我旋转平板电脑,我会看到第一个和第二个复选框,其名称为“再见”,所有内容都未选中

<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

}