1

인용구를 표시 할 QuoteFragment라는 조각이 있습니다. 나는 QutoeFragment를 호스트 할 QuoteViewPager라는 이름의 액티비티를 만들었다. 나는리스트 뷰에 대해 동일한 인용문을위한 다른 활동과 단편을 가지고있다. 사용자가 뷰 페이저에서 50 번 견적서에 있고 목록보기로 이동하여 다시 호출기로 돌아 오는 경우보기 호출기가 견적 # 1에서 표시되기 시작합니다. Qutoe # 50의 디스플레이 뷰 호출기를 시작하고 싶습니다. 다음과 같은 방법으로 시도했지만 작동하지 않았습니다. 내 조각 클래스에서 :Android Viewpager 페이지의 상태를 저장하는 방법은 무엇입니까?

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putInt(PAGE_ITEM((QuoteViewPager)getActivity()).getViewPager().getCurrenttem()); 


    } 

여기 getViewPager 내 QuoteViewPager에 다음 코드를 확장하고있다 FragmentActivity 클래스 :

public ViewPager getViewPager(){ 

     if(quoteViewPager == null){ 
      quoteViewPager = new ViewPager(this); 
      quoteViewPager.setId(R.id.quoteViewPager); 
     } 

     return quoteViewPager; 
    } 

그리고에서 onCreate (번들 saveInstanceState)에서 같은 조각에 내가 다음 코드를 삽입 한

: 내 PAGE_ITEM (50) 값을 가지고 있지만 savedInstanceState 항상에서 onCreate 방법 null 인 것을 알아 냈다 내가 그것을 디버깅 할 때

if(savedInstanceState != null){ 
     ((QuoteViewPager)getActivity()).getViewPager().setCurrentItem(savedInstanceState.getInt(PAGE_ITEM,0)); 
} 

. 누구든지 이걸 도와 줄 수 있습니까?

+0

하나라도 알고 있나요을 복원? – user1459497

+0

onRestoreInstanceState (...)를 무시해보십시오. –

+0

안녕하세요 @ user1459497이 문제를 해결 했습니까 ?? 나도 똑같은 문제가있어, 해결하면 나 좀 도와 줄 수있어. 고마워. – swetha

답변

1

먼저 키 값 쌍을 Bundle에 입력해야합니다. 그리고 재정 onRestoreInstanceState은 국가

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putInt("quoteNumber", PAGE_ITEM((QuoteViewPager)getActivity()).getViewPager().getCurrenttem()); 
} 


@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    int quoteNumber = savedInstanceState.getInt("quoteNumber"); 
} 
관련 문제