我有一個ViewPager,裏面有11個片段。我正在尋找在創建分段後向碎片發送參數的方法將參數發送給ViewPager片段
@Override
public Fragment getItem(int position) {
return new ScreenSlidePageFragment();
}
此功能僅在第一次調用。每次我滑動ViewPager和片段顯示給用戶,我想發送新的參數到可見的碎片片段?這可能嗎 ?
我有一個ViewPager,裏面有11個片段。我正在尋找在創建分段後向碎片發送參數的方法將參數發送給ViewPager片段
@Override
public Fragment getItem(int position) {
return new ScreenSlidePageFragment();
}
此功能僅在第一次調用。每次我滑動ViewPager和片段顯示給用戶,我想發送新的參數到可見的碎片片段?這可能嗎 ?
問題的第一部分是檢測頁面何時更改。您可以使用pager.setOnPageChangeListener()
來設置ViewPager
的OnPageChangeListener
。在您創建的OnPageChangeListener
內,您需要覆蓋onPageChanged
方法並將邏輯放到那裏。請參閱此處以供參考:https://stackoverflow.com/a/11797936/3081611
問題的第二部分是如何將邏輯發送到片段本身。所以你需要對片段進行一些參考。您可以從onPageChanged方法獲取片段的索引。但是,它實際上並不會將片段返回給您 - 只有位置。獲取實際的片段有點棘手。您不能使用尋呼機的getItem
功能。這有點令人迷惑,但getItem()
是ViewPager
用於創建新片段的內容。如果你嘗試使用它,你只會得到一個新的ScreenSlidePageFragment
的參考信息,但實際上並沒有顯示在屏幕上。
一個好辦法來解決這個問題是延長ViewPager
,並使得創建或破壞片段時,它被保存在一個陣列覆蓋instantiateItem()
和destroyItem()
功能自定義的尋呼機。然後你可以創建一個返回數組中實際片段的函數。請參閱以下內容以供參考:https://stackoverflow.com/a/15261142/3081611
Fareya對上面原始問題的回覆解決了問題的第三部分 - 一次你已經檢測到頁面已經改變,並且你有一個被改變的片段的引用,你如何向它發送數據?如果您需要該部分的幫助,請查看它。 – 2014-11-14 19:57:47
Check out http://stackoverflow.com/questions/10078894/viewpager-pass-bundles-between-fragments – Fareya 2014-11-14 19:52:26