2014-12-22 3 views
1

Google here에서 제공하는 구현과 유사한 탭을 사용하여 ViewPager을 구현 중입니다.탭이 저장된 상태의 Android ViewPager

내 앱의 동작은 다음과 같습니다. 내 ViewPager에는 3 "페이지"(fragA, fragB, fragC)가 있으며 ViewPager 상단에 3 개의 탭을 구현하고 있습니다. Google의 구현과 내 사이의 차이점은 탭이 fragments 사이를 탐색하는 데 사용되지 않는다는 것입니다. 예를 들어, 내 탭 중 하나를 누르면 보이는 조각에 다른 데이터 세트가로드됩니다. fragAtab3으로 선택하고 fragB을 선택하고 tab2을 선택하고 fragCtab1으로 선택하면됩니다.

조각 사이를 스 와이프하면 현재 상태 인 탭을 유지하려고합니다. 이 코드와이 achiving 해요 : 내가 3 개 조각에서 위의 코드를

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if (isVisibleToUser && mTabHost != null) { 
     if (mTabHost.getCurrentTab() != selectedTimePeriod) { 
      mTabHost.setCurrentTab(selectedTimePeriod); 
     } 
    } 
} 

이 내가조차 정확히부터 재현 할 수 있지만, 불행히도 어떤 상황에서 거의 모든 시간을 예상대로 작동 그것은 랜덤하게 일어난다, 국가는 유지되지 않는다.

내 탭의 상태를 저장하는 적절한 방법은 무엇입니까 (예 : 화면 회전 사이) Viewpager 사이에 스 와이프하나요?

+0

ViewPager의 setOnPageChangeListener를 사용해 보셨습니까? – Karioki

답변

3

당신은 조각을로드하고 메모리에 보관됩니다

viepagerObj.setOffscreenPageLimit(2) 

이를 사용할 수 있습니다. 예를 들어 첫 번째 것 (fragC)과 별도로 발사 당시에 다음 2 개의 조각 (fragB 및 fragA)이로드되어 메모리에 저장됩니다. 기본적으로 값은 1이며, frag C + 다음 조각 (fragB)이로드되고 오른쪽으로 스 와이프하면 fragA가 제거되어로드되며, 그 반대의 경우도 마찬가지입니다.

+0

안녕하세요. 불행히도 그건 내 문제를 해결하지 못합니다. 화면 회전시 올바른 탭을 유지할 수 없습니다. – Favolas

+0

setRetainInstance (true)를 시도 했습니까? 안쪽 조각을 방향을 변경하는 동안 유지하기 위해 –

+0

또한 오리엔테이션을 변경하는 동안 UI를로드하지 않으려면 매니 페스트 파일 –