gpt4 book ai didi

android - 当设备的方向改变时动态膨胀行但奇怪的行为

转载 作者:行者123 更新时间:2023-11-29 01:52:12 25 4
gpt4 key购买 nike

我正在尝试动态地扩充我的行,但是当我更改平板电脑的方向时,我取消选择了所有内容,并且复选框名称填充了最后一行的信息。例如,假设我有两个复选框(两行),第一个说“你好”,第二个说“再见”。如果我旋转平板电脑,我会得到第一个和第二个复选框,名称为“再见”,并且所有内容都未选中。

<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>

我的行定义如下 (mRowLayout.xml):

<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayoutRow"
android:layout_width="match_parent"
android:layout_height="match_parent">

<CheckBox
android:id="@+id/checkBoxServEmail"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</TableRow>

然后我使用以下代码来膨胀我的行:

private void fillTable(View v, Cursor c) {

TableLayout ll = (TableLayout) v.findViewById(R.id.tableLayoutList);

View mTableRow = null;
int i = 0;
while(!c.isAfterLast()){
i++;
mTableRow = (TableRow) View.inflate(getActivity(), R.layout.mRowLayout, null);

CheckBox cb = (CheckBox)mTableRow.findViewById(R.id.checkBoxServEmail);

Log.e("debugging", "email: "+c.getString(c.getColumnIndex(Serv.EMAIL)));
cb.setText( c.getString(c.getColumnIndex(Serv.EMAIL)));


mTableRow.setTag(i);

//add TableRows to TableLayout
ll.addView(mTableRow);

c.moveToNext();
}
}

有谁知道我为什么会有这种奇怪的行为?。另请注意,我在我的日志 cat whats going on 中放置了一个用于打印的 Log.e。每次我改变设备的方向时,我都会收到“你好”和“再见”,但 setText 似乎无法正常工作。

请帮忙,我已经解决这个问题好几个小时了,但我不明白:(

最佳答案

当您更改设备方向时, Activity 将被销毁并重新创建。你应该使用

onSaveInstanceState

回调以保存您当前的 UI 数据。并使用 onCreate 恢复它:

if (savedInstanceState == null) {

// first run

} else {

// not first run

}

关于android - 当设备的方向改变时动态膨胀行但奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17246384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com