2012-06-06 2 views
0

내 응용 프로그램에는 아래쪽으로 스크롤 할 때마다 동적으로 10 개의 항목이 증가하는 listview가 있습니다. 그래서 세로 방향을 사용하는 동안 나는 100 개의 항목까지 스크롤 한 다음 가로 방향을 바꾸면 내 listview가 다시 생성됩니다 (처음 10 개 항목 만 표시). 내가 말하는 세로 응용 프로그램 충돌로 돌아갈 때 문제는 여기에 있습니다 :기기 방향 변경 listview가 다시 만들어 짐

06-06 12:06:54.849: E/AndroidRuntime(4684): java.lang.RuntimeException: 
Unable to start activity 
ComponentInfo{com.Android.MyApp/com.Android.MyApp.ListViewActivity}: 
java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 

방법 목록보기가 방향을 변경하는 방법에 심지어 복원하기 위해 ???

+0

레크 리 에이션을 중지하려면 활동 태그에 매니페스트 파일'android : configChanges = "orientation | keyboardHidden"'을 추가하십시오. –

답변

-2

오리엔테이션 변경시 활동이 다시 생성되기 때문에 이러한 현상이 발생합니다.

android:configChanges="orientation" 

및 활동에이 방법을 포함한다 : 그것을 방지하기 위해
, 활동 태그 아래 AndroidManifest.xml이 추가

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    } 

는 희망이 도움이!

+1

아무 것도 변경하지 않을 경우 onConfigurationChanged를 구현할 필요가 없습니다 (보통 가로 방향에서 세로 방향으로 전환하고 wrap_content ListView를 사용하는 경우 일반적으로 필요하지 않음) – Tim

+0

예 ...하지만 수정해야하는 경우 방향 변경에 따라 제어 위치/크기가 달라 지므로이 방법이 필요합니다. 따라서 구현에 아무런 해가 없습니다. – GAMA

+0

및 onConfigurationChanged의 newConfig는 방향이어야합니다 ??? 아니면 그냥 newConfig? – Housefly

-1

대답은 아주 간단합니다 : 당신은 당신의 활동의 AndroidManifest를-항목을 변경하고

android:configChanges="orientation" 

오리엔테이션 변경이 발생하는 경우 활동이 재현되지 않도록 할 것이 하나를 추가해야합니다.)

+0

그리고 onConfigurationChanged ....에서 구현해야하는 것은 무엇입니까? – Housefly

+0

이미 슈퍼 구현이 존재합니다. 슈퍼를 호출하는 경우 오버라이드 할 필요가 없습니다. – Tim

+2

은 많은 시간을 절약 해줍니다 :-) +1 – Thkru

0

당신은 두 가지 선택이있다;

것은 (당신이 반응 할 경우)의 변화에 ​​반응하는 onConfigurationChanged 메서드를 재정의해야합니다.

옵션

1 android:configChanges="orientation" 두 활동을 방지 포함하는 다시 시작하지만이 다른 방향에 대해 서로 다른 UI를 설정에서 당신을 방지 할 수 있습니다. 당신이 다른 방향에 대한 설정 다른 UI하려면

옵션 2

그럼 당신은 좀 더 코드를 작성해야합니다.

활동을 다시 시작하는 동안 onSaveInstanceState 및 onRestoreInstanceState을 읽고 값을 저장하고 검색하십시오.