2014-11-14 48 views
1

我有一個ViewPager,裏面有11個片段。我正在尋找在創建分段後向碎片發送參數的方法將參數發送給ViewPager片段

@Override 
     public Fragment getItem(int position) { 
      return new ScreenSlidePageFragment(); 
     } 

此功能僅在第一次調用。每次我滑動ViewPager和片段顯示給用戶,我想發送新的參數到可見的碎片片段?這可能嗎 ?

+1

Check out http://stackoverflow.com/questions/10078894/viewpager-pass-bundles-between-fragments – Fareya 2014-11-14 19:52:26

回答

0

問題的第一部分是檢測頁面何時更改。您可以使用pager.setOnPageChangeListener()來設置ViewPagerOnPageChangeListener。在您創建的OnPageChangeListener內,您需要覆蓋onPageChanged方法並將邏輯放到那裏。請參閱此處以供參考:https://stackoverflow.com/a/11797936/3081611

問題的第二部分是如何將邏輯發送到片段本身。所以你需要對片段進行一些參考。您可以從onPageChanged方法獲取片段的索引。但是,它實際上並不會將片段返回給您 - 只有位置。獲取實際的片段有點棘手。您不能使用尋呼機的getItem功能。這有點令人迷惑,但getItem()ViewPager用於創建新片段的內容。如果你嘗試使用它,你只會得到一個新的ScreenSlidePageFragment的參考信息,但實際上並沒有顯示在屏幕上。

一個好辦法來解決這個問題是延長ViewPager,並使得創建或破壞片段時,它被保存在一個陣列覆蓋instantiateItem()destroyItem()功能自定義的尋呼機。然後你可以創建一個返回數組中實際片段的函數。請參閱以下內容以供參考:https://stackoverflow.com/a/15261142/3081611

+0

Fareya對上面原始問題的回覆解決了問題的第三部分 - 一次你已經檢測到頁面已經改變,並且你有一個被改變的片段的引用,你如何向它發送數據?如果您需要該部分的幫助,請查看它。 – 2014-11-14 19:57:47