2011-11-03 18 views
3

My FragmentActivity包含一些頁面的ViewPager。一旦修改了一個頁面,其他人就需要收到通知。 所以我的步驟: 1.從片段發送通知到活動 2.獲取片段列表 3.呼叫通知給每一個。如何通知ViewPager中的其中一個片段發生了變化?

問題出在第2步,得到碎片。 調用adapter.getItem(int i)調用MyFragmentAdapter.getItem(int i),它返回未附加到活動的新Fragment。

任何想法? 在此先感謝。

回答

3

添加下一個方法YourFragmentPagerAdapter解決了這個問題:

public Fragment getActiveFragment(ViewPager container, int position) { 
    String name = makeFragmentName(container.getId(), position); 
    return mFragmentManager.findFragmentByTag(name); 
} 

private static String makeFragmentName(int viewId, int index) { 
    return "android:switcher:" + viewId + ":" + index; 
} 
+0

只要內部靜態方法'FragmentPagerAdapter.makeFragmentName(int viewID,int index)'繼續使用相同的字符串保存創建的片段,此解決方案就會工作。有關詳細信息,請參閱'FragmentPagerAdapter.instantiateItem'。也許你應該只使用 – Diederik

+0

erm,正如我所說的那樣:在您使用JakeWharton的ActionBarSherlock時,他已經修改了支持庫,以便此方法是公開的。 – Diederik

0

爲什麼不直接從片段發出廣播,然後在接收廣播的其他片段中有廣播接收器?

+0

是啊,這是一個解決方案。但顯然你應該有一個能力來迭代ViewPager中的所有片段。 – kzotin

相關問題