У меня есть ошибка с моей активностью.
У меня есть три заглушки вида в моей линейной компоновке, например, так:
<ViewStub
android:id="@+id/index_1"
android:layout="@layout/index_edittext"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<ViewStub
android:id="@+id/index_2"
android:layout="@layout/index_edittext"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<ViewStub
android:id="@+id/index_3"
android:layout="@layout/index_edittext"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
my onCreate условно проверяет, что раздувать:
for (int i = 0; i < 3; i++) {
int id = convertIndexToId(i); //will turn i into R.id.index_1
ViewStub stub = findViewById(id);
if (bShouldBeSpinner) {
stub.setLayoutResource(R.layout.index_spinner);
View root = stub.inflate();
Spinner spin = (Spinner)root.findViewById(R.id.my_spinner);
spinner.setAdapter(adapter);
spinner.setSelection(0);
}
else {
stub.setLayoutResource(R.layout.index_edittext);
View root = stub.inflate();
EditText et = (EditText)root.findViewById(R.id.my_edittext);
//et.phoneHome(); just kidding
et.setText(String.valueOf(System.currentTimeMillis()));
}
}
Я заставляю bShouldBeSpinner в false.Вывод текста редактирования выглядит следующим образом:
1300373517172
1300373517192
1300373517221
Однако, когда я поворачиваю экран и onCreate вызывается во второй раз, вывод выглядит так:
1300373517221
1300373517221
1300373517221
Первоначально это заставило меня подумать, что вы должны раздувать представление только один раз, и иерархия сохраняется в промежутке между onCreate's ... однако, когда я запускаю его только в первый раз во второй раз, нетдля заглушек показаны виды.
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Spinner style="@style/SearchInput" android:id="@+id/my_spinner" />
</LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<EditText style="@style/SearchInput" android:id="@+id/my_edittext" />
</LinearLayout>
Я чувствую, что документация предполагает что-то, чего я не заметил или отсутствует.Кто-нибудь видит, что я делаю не так?
РЕДАКТИРОВАТЬ
Я добавил в просмотр заглушки android: inflatedId = "index_1_root" ... и т.д.
это самое странное, когда я добавляю эти строки после цикла for:
EditText v = indexRoot1.findViewById(R.id.index_edit_text);
Log.d(TAG, "EditTExt: " + v);
EditText v2 = indexRoot2.findViewById(R.id.index_edit_text);
Log.d(TAG, "EditTExt: " + v2);
вывод говорит (я считаю), что они являются ссылками на различные EditTexts.
EditTExt: android.widget.EditText@47210fe8
EditTExt: android.widget.EditText@47212ba8
Таким образом, они снова раздуваются, но текстустановить, какой последний текст редактирования был установлен на первом проходе.