2013-01-23 19 views
1

我正在使用FragmentStatePageAdapter(android.support.v4),並且我已將setOffscreenPageLimit設置爲2,因此它會在當前顯示的片段後面創建並存儲片段2。FragmentStatePageAdapter不暫停片段

問題: 當關屏片段創建,他們也立即開始恢復即使他們沒有被畫到屏幕上呢。 (!)

在當前頁面改變,並且相應的片段刷卡關閉屏幕,它不暫停停止

我試圖登錄FSPA所有的回調和其超類的行爲(!) - setPrimaryItem來了最接近於可用,但似乎呼籲種種原因,不只是片段時被展示。

如何檢測到您的碎片之一不再顯示或返回顯示?

回答

1

您可以使用偵聽器。

 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); 
       } 
      } 

     }); 

凡PageSelectedListener是由你定義像現在這樣

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