2011-08-31 5 views
2

WebView가있는 ViewPager가있는 프래그먼트가 있습니다. 전화를 돌릴 때 ViewPager는 첫 번째 페이지를 보여줍니다. 활동 및 단편이 다시 만들어지기 때문입니다. ViewPager의 상태를 어떻게 저장합니까? 다음 코드는ViewPager의 회전

@Override 
public void onActivityCreated(Bundle savedInstanceState) 
    { 
     super.onActivityCreated(savedInstanceState); 
     if (savedInstanceState != null) 
     { 
      // Restore last state for checked position. 
      int pos = savedInstanceState.getInt("currentPosition"); 
      this.setSelectedItem(pos); 
     } 
    } 

    @Override 
    public void onSaveInstanceState(Bundle outState) 
    { 
     super.onSaveInstanceState(outState); 
     outState.putInt("currentPosition", positionOfSelectedIndex); 
    } 

답변

1

그것은 당신이 당신의 FragmentActivity (호스트 활동)를 만드는 방법에 대해 전부 작동하지 않습니다. 뷰 페이지의 상태를 저장할 수는 없지만 뷰 페이지의 어댑터에 푸시 한 상태를 저장할 수 있습니다. 또한 일부 데이터를 조각 안에 저장할 수도 있습니다 (같은 방식). 또한 어댑터가보기를 자동으로 삭제하지 않게하려면 (보기 페이지를 스 와이프 할 때) 어댑터의 destroy 메소드를 super로 대체하지 마십시오. 코드와 간단한 솔루션으로 내 질문을 참조 : ViewPager and fragments — what's the right way to store fragment's state?

3

당신의 조각의 생성자에 넣어 다음

setRetainInstance(true); 

여러 생성자가있는 경우이 기본에 있는지 확인해야합니다 더-인수하지 다음 반드시 서로 생성자를 만들고 생성자는 PageAdapter를 인스턴스화하여 FragmentActivity에

this(); 

그런 다음 호출 다음 줄을 넣어 :

myPager = (ViewPager)findViewById(R.id.pager); 
myAdapter = new MyPagerAdapter(anyParamsYouMightHave); 
myPager.setAdapter(myAdapter); 
myPageAdpater.setCurrentItem(indexOfSomePointYouWishToReturnTo); 

마크