0

오리엔테이션 기능을 앱에 구현하려고합니다. 이 앱은 기본적으로 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"/> 

답변

0

당신은 매니페스트에 사용자의 작업에 매개 변수

android:configChanges="orientation" 

를 추가 할 수 있습니다. 나는 네가 원하는대로한다고 생각한다. 다음과 같이 표시되어야합니다 :

<activity 
     android:name="com.your.package.YourActivity" 
     android:configChanges="orientation" 
</activity> 
+0

이 이미 추가되었습니다. android : configChanges = "keyboard | keyboardHidden | orientation" – Renjith

+0

TabHost가있는 활동과 탭에 표시된 활동에 모두 추가 했습니까? – azertiti

+0

예, 추가했습니다! – Renjith