我有三个选项卡,全部来自布局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>
然而,似乎如果进行方向更改并在三个EditTexts之一中键入内容(我猜所有具有相同的ID),则文本不会恢复到相同的状态。有时(取决于我输入的选项卡)所有字段都是空的或所有字段都已填充。
处理此问题的正确方法是什么?
答案 0 :(得分:0)
我最终得到了三个单独的布局文件list1.xml
,list2.xml
,list3.xml
,这些文件只在ID中有所不同。因此list1.xml
会有@+id/filterText1
,list2.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