오리엔테이션 기능을 앱에 구현하려고합니다. 이 앱은 기본적으로 TabHost를 사용하여 탭으로 구성됩니다. 각 탭은 몇 가지 활동이있는 활동 그룹입니다. 이 자식 활동 각각은 AsyncTask를 사용하여 백그라운드 데이터를 실행하여 서버 데이터를 추출하고 UI를 렌더링합니다. 예를 들어 오리엔테이션 변경시 tabHost 객체를 가져올 수 없습니다.
,HomeActivity- tab activity class that creates all the tabs
UserActivity- an activity group class representing a tab (say Tab 1)
TabOne- child activity inside UserActivity group
사용자는 곧 성공적으로 로그인 한 후 탭 1을 본다. 이 탭에 오리엔테이션 기능을 설정하려고 할 때 문제가 발생합니다. 활동 (TABONE) 내, 내가 추가 한 다음
@Override
public void onSaveInstanceState(Bundle outState) {
System.out.println("saving state..!");
outState.putStringArray("imageUrls", imageArray);
super.onSaveInstanceState(outState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
System.out.println("restoring state..!");
imageArray = savedInstanceState.getStringArray("imageUrls");
super.onRestoreInstanceState(savedInstanceState);
} 내가 'imageUrls'상태를 얻을 수 있어요
. 하지만 나중에 정적 탭 호스트 변수에 액세스 할 수 없었습니다.
HomeActivity.tabHost.getTabWidget().getChildAt(1)
tabHost 변수가 null입니다! 나는 그 상태를 저장하지 않을 것이다. tabHost 인스턴스를 어떻게 저장할 수 있습니까?
다른 커뮤니티 게시물을 조사하는 동안 'onRetainNonConfigurationInstance()'가 발견되었습니다. 나는 같은 것을 구현했다.
public Object onRetainNonConfigurationInstance() {
System.out.println("retaining state..!");
return HomeActivity.tabHost;
}
부이 개체는 null로 반환됩니다. tabHost를 사용하여 앱의 방향 변경을 처리 할 수있는 단계를 안내해 줄 수 있습니까?
혼란스러운 점이 있으면 저에게 물어보십시오.
미리 감사드립니다.
SOLVED : 매니페스트의 activity 태그에 screenSize를 추가하면 문제가 해결되었습니다.
<activity android:name=".HomeActivity"
android:configChanges="orientation|screenSize"/>
이 이미 추가되었습니다. android : configChanges = "keyboard | keyboardHidden | orientation" – Renjith
TabHost가있는 활동과 탭에 표시된 활동에 모두 추가 했습니까? – azertiti
예, 추가했습니다! – Renjith