2014-09-08 5 views
0

컨텍스트 :안드로이드 : 동적 뷰 참조는 더 이상 유효 스크린 회전 후의 없다

내가 활성 N 동적으로 생성 된 이미지 뷰 (들)을 갖는다.

이미지 뷰를 터치 할 때 : 1) IV 객체 참조가 onTouch 이벤트에 저장됩니다. 2) 대화 상자가 열립니다. 사용자가 이미지를 편집 할 수있게합니다.

사용자가 편집을 완료하면 변경 사항이 저장된 참조가있는 객체에 적용됩니다.

그러나 대화 상자가 열려있는 동안 사용자가 장치를 회전하면 작업이 다시 작성됩니다. 선택한 ImageView에 대한 참조가 더 이상 유효하지 않습니다.

문제 :

그래서, 문제는 회전 이벤트에서 생성되는 재 이미지 뷰가, 난 내 편집을 적용 할 수있는 이미지 뷰 아무 생각이 없다는 것을 의미 내가 저장 한 기준에 다른 기준을 가지고 있다는 것입니다 에 ..

이 쉽게 해결 될 수있는 일반적인 문제처럼 보인다,하지만 난 방법을 몰라 ..

이미지 뷰 (들)은 동적으로 생성되며, N 수량이있을 수 있기 때문에 ID로보기를 찾을 수 없습니다.

태그를 설정할 수 없습니다. 태그를 다시 만들 때 태그가 손실 될 수 있습니다.

나는 retainInstanceState에 대해 읽었지만 이것은 조각을위한 것 같습니다. 활동이 아님

답변

0

생성 된 ImageView에 ID를 지정하십시오. 대화 상자가 표시되면이 ID를 대화 상자로 전달합니다. 대화 상자가 끝나면 값과이 ID를 반환합니다. 그런 다음 ID로 ImageView를 가져 오거나 새 것이거나 old가 id ' position '은 활동을 몇 번이나 반복해도 상관 없습니다.

예를 들어 :

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

그럼 그냥 필요 패스 ID 대화 상자 iv.getId() 및 대화 마감이가에 <activity>android:configChanges="orientation|<whatever other flags you need>"을 추가하는 것입니다 해결하기 위해 findViewById(id);

0

가장 쉬운 방법을 호출하여 정맥을 얻을 때 AnroidManifest.xml이므로 방향 변경시 작업이 다시 생성되지 않습니다. 그러나이 방법을 사용하면 officially discouraged입니다 :

참고 :이 속성을 사용하여 피할 만 또 다른 방법은 ImageView로 대화하지 기준에 저장하는 것입니다

최후의 수단으로 사용되어야한다, 대신 id입니다.