如何从同一布局中获得多个选项卡,正确处理edittext?

时间:2012-08-31 23:53:51

标签: android android-layout android-tabhost android-orientation

我有三个选项卡,全部来自布局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),则文本不会恢复到相同的状态。有时(取决于我输入的选项卡)所有字段都是空的或所有字段都已填充。

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

1 个答案:

答案 0 :(得分:0)

我最终得到了三个单独的布局文件list1.xmllist2.xmllist3.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