0

我有三个选项卡,全部来自布局 xml 文件,比如 list.xml。在 list.xml 中,我定义了一个 EditText,如下所示:

<EditText
    android:id="@+id/filterText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_toLeftOf="@+id/filterClear"
    android:hint="@string/filterHint"
    android:text="@string/filter">
</EditText>

但是,似乎如果进行方向更改并在三个 EditText 之一中输入了一些内容(我猜都是使用相同的 ID),则文本不会恢复到相同的状态。有时(取决于我输入的选项卡)所有字段为空或所有字段都已填充。

处理这个问题的正确方法是什么?

4

1 回答 1

0

我最终得到了三个单独的布局文件list1.xml, list2.xml, list3.xml,它们仅在 ID 上有所不同。所以list1.xml会有@+id/filterText1list2.xml会有@+id/filterText2,等等。

然后在ListActivity.java我曾经将它作为我的 onCreate 的一部分的文件中:

setContentView(R.layout.list);

在整个活动中多次提到这一点:

EditText filter = (EditText)findViewById(R.id.filterText);

...

相反,我现在在我的 onCreate 中得到了这个:

if(START_TAB1.equals(startMode)) { // Checks which tab is being started
    setContentView(R.layout.list1); // Use appropriate layout
    filterTextId = R.id.filterText1; // Save correct ID in a class variable
}
// And then the same "else if..." for all other tabs

这在整个活动中引用字段本身时:

EditText filter = (EditText)findViewById(filterTextId); // Use common ID
于 2012-09-02T08:54:23.590 回答