2014-09-08 2 views
0

Контекст:Android: ссылка на динамический View больше не действует после поворота экрана

я есть п динамически создаваемых ImageView (ы) в деятельности.

при обращении к изображению: 1) Ссылка на объект IV хранится в событии onTouch. 2) открывается диалоговое окно; позволяя пользователю редактировать изображение.

Когда пользователь закончил редактирование, изменения будут применены к объекту, у которого есть сохраненная ссылка.

Однако, если пользователь поворачивает устройство, когда диалог открыт, активность воссоздается; и ссылка на выбранный ImageView больше не действительна.

Издание:

Таким образом, проблема заключается в том, что воссозданный ImageView, произведенный от случая вращения, имеет другую ссылку на ссылки, которые я сохранил, а это означает, что я понятие не имею, который ImageView применить свои правки к ..

Это похоже на общий вопрос, который можно было бы легко решить, но я не знаю, как ..

потому что ImageView (s) создаются динамически, и может быть п количество , я не могу найти просмотр по ID.

Я не могу установить тег, поскольку он потерян при воссоздании IV.

Я прочитал что-то о keepInstanceState, но это, по-видимому, для фрагментов; не связанные с деятельностью

ответ

0

Назначить идентификаторы созданным ImageViews. Когда диалог отображается, вы передаете этот идентификатор в диалоговом окне, когда диалог заканчивается, он возвращает ваши значения и этот идентификатор, тогда вы просто получаете ImageView по id, будь то новый, или старый не имеет значения, поскольку пара id-iv на позиция "одинаковы независимо от того, сколько раз вы воссоздаете действия.

В качестве примера:

for (int i=0;i<20;i++) { 
    ImageView iv = new ImageView(context); 
    iv.setId(1337 + i); // Spice things up a little :D 
    addView(iv); 
} 

Тогда просто передать требуется идентификатор iv.getId() в диалоге, и когда диалог заканчивается получить в.в. по телефону findViewById(id);

0

Самый простой способ исправить это, чтобы добавить android:configChanges="orientation|<whatever other flags you need>" к вашему <activity> в AnroidManifest.xml, поэтому активность не будет воссоздана при изменении ориентации. Однако при использовании этого метода officially discouraged:

Примечание: С помощью этого атрибута следует избегать и использовать только в крайнем случае

Другим способом будет хранить в диалоге не ссылки на ImageView, но его id.