2013-01-23 4 views
1

FragmentStatePageAdapter (android.support.v4)를 사용하고 있으며 setOffscreenPageLimit을 2로 설정하여 현재 표시된 단편의 앞과 뒤에 2 단을 생성하고 저장합니다.FragmentStatePageAdapter는 단편을 일시 중지하지 않습니다.

문제 : 오프 스크린의 파편이 만들어 질 때, 그들은 즉시 을 시작 들이 아직 화면에 그려진되지 않은 경우에도을 재개도 있습니다. (!)

현재 페이지가 변경 될 때 상기 대응하는 단편이 화면을 접촉 할 그것은을 중지하지 않거나 을 멈췄다.

내가 모든 FSPA에서 콜백과 그 슈퍼 클래스의 동작 로그인 시도했습니다 (!) -이 사용할 수있는 가장 가까운 제공하지만 모든 종류의 이유에 대해 호출 할 것으로 보인다 setPrimaryItem뿐 아니라 조각 가 표시됩니다.

파편 중 하나가 더 이상 표시되지 않거나 디스플레이로 돌아 오는 것을 어떻게 감지 할 수 있습니까?

답변

1

리스너를 사용할 수 있습니다. PageSelectedListener이 당신에 의해 정의된다

 mPager.setOnPageChangeListener(new OnPageChangeListener(){ 

      @Override 
      public void onPageScrollStateChanged(int arg0) { 
      } 

      @Override 
      public void onPageScrolled(int arg0, float arg1, int arg2) { 
      } 

      @Override 
      public void onPageSelected(int position) { 
       if(mPageSelectedListener!=null){ 
        mPageSelectedListener.pageSelected(position); 
       } 
      } 

     }); 

그렇게

public interface PageSelectedListener{ 
     public void pageSelected(int position); 
    }; 

    public void setPageSelectedListener(PageSelectedListener l){ 
     mPageSelectedListener = l; 
    } 

추천하고있는 유일한 방법이 될 것 같습니다 않는 조각

if(getActivity() instanceof MyActivity 
     ((MyActivity)getActivity()).setPageSelectedListener(new PageSelectedListener(){ 
      @Override 
      public void pageSelected(int position) { 
       if(position==MyAdapter.MY_PAGE){ 
        // do something with currently viewed page...like resume it 
       } else { 
        // do something with any other page..like pause it 
       } 
      } 
     }); 
    } 
+0

그래,이처럼 사용할 수 있습니다. 참고 : 선택한 리스너는 초기 선택에서 실행되지 않습니다. 이후 리스너에서만 첫 번째 리스너를 처리해야합니다. 성가신 종류입니다. – Splash

관련 문제