Возникла еще одна проблема, и эта проблема озадачивает!
Вот и мы.
У нас есть макет ...
<?xml version="1.0" encoding="utf-8"?>
<!-- Template for creating a result in MediaUpload -->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:isScrollContainer="true"
android:focusableInTouchMode="false"
android:focusable="false">
<ImageView android:id="@+id/imgView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="110dp"
android:maxHeight="110dp"
android:minWidth="110dp"
android:minHeight="110dp"
android:layout_gravity="center_vertical"
android:padding="3dp"
android:scaleType="center"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:saveEnabled="true"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal">
<TextView android:id="@+id/img_file_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/LinkText"
android:textStyle="bold"
android:paddingBottom="3dp"/>
<EditText android:id="@+id/img_title"
android:hint="Title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minWidth="150dp"
android:maxHeight="50dp"
android:inputType="textVisiblePassword"
android:maxLength="255"/>
<EditText android:id="@+id/img_desc"
android:hint="Description"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minWidth="150dp"
android:maxHeight="50dp"
android:maxLength="255"/>
</LinearLayout>
</LinearLayout>
<ImageView
android:src="@drawable/divider"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:paddingTop="2dp"
android:paddingBottom="2dp">
</ImageView>
</LinearLayout>
Мы используем это здесь как шаблон для объекта, который пользователь может загрузить на наш сайт.
(Это масштабный макет, поэтому просто публикуйте то, к чему мы его добавляем).
<LinearLayout android:id="@+id/list_of_images"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
Так ... Вот актуальная проблема. Когда пользователь выбирает изображение из своей галереи, оно правильно добавляется в наш LinearLayout. Теперь у одного из наших сотрудников постоянно возникают проблемы с памятью, и приложение закрывается, пока он снимает или просматривает. Наше приложение настроено так, чтобы сохранять все данные (например, Uri, текст заголовка, текст описания и т. Д.) Непосредственно перед тем, как пользователь покидает приложение в метод saveInstanceState.
/*
* The Activity is being recycled and needs to have its instance
* saved before we lost all of the image URis!
*/
protected void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
helper.saveEnteredData();
outState.putParcelableArray(IMAGE_URI_BUNDLE_KEY, helper.getUploadObjectArray());
outState.putParcelable(CAPTURE_IMAGE_URI_BUNDLE_KEY, currentFileURI);
outState.putInt(CURRENT_JOB_BUNDLE_KEY, reportSpinner.getSelectedItemPosition());
ArrayList<ReportInfoParcelable> alReps = new ArrayList<ReportInfoParcelable>();
for(int i = 0; i < reportList.length; ++i)
alReps.add(new ReportInfoParcelable(reportList[i]));
outState.putParcelableArray(JOB_LIST_BUNDLE_KEY, alReps.toArray(new ReportInfoParcelable[alReps.size()]));
}
Вот помощник.saveEnteredData () ...
public void saveEnteredData()
{
ViewGroup vg = null;
UploadObject object = null;
String title, desc;
for(int i = 0; i < mLinearLayout.getChildCount(); i++)
{
vg = (ViewGroup) mLinearLayout.getChildAt(i);
object = alUploadObjects.get(i);
title = ((TextView) vg.findViewById(R.id.img_title)).getText().toString();
desc = ((TextView) vg.findViewById(R.id.img_desc)).getText().toString();
object.setTitle(title);
object.setDesc(desc);
}
}
Когда приложение возвращается из сбоя после того, как пользователь покинул действие, когда мы отлаживаем через приложение по возвращении, массив возвращаемых объектов UploadObject содержит все правильные Uri, заголовки и описания, но когда приложение, наконец, отображается, ВСЕ editTexts в LinearLayout, к которому мы добавляем, все внезапно содержат заголовок и описание последнего UploadObject в массиве Parcelable. Опять же, мы отлаживаем каждое добавление объектов, и объекты содержат правильные данные. Мы сбиты с толку и нуждаемся здесь в помощи!