0

3 つのタブがあり、すべてレイアウト 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>

ただし、方向の変更を行って、3 つの EditText のいずれかに何かを入力した場合 (すべて同じ ID であると思います)、テキストは同じ状態に復元されないようです。ときどき (入力したタブに応じて) すべてのフィールドが空であるか、すべてのフィールドが入力されています。

これを処理する適切な方法は何ですか?

4

1 に答える 1

0

最終的に、ID のみが異なる3 つの別々のレイアウト ファイルlist1.xmllist2.xml、が作成されました。list3.xml持っているだろ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 に答える