2

我用8個使用相同xml佈局的片段創建了一個ViewPager。 但是,我想要不同的片段使用不同的內容。 我需要得到它的任何片段的ID,以便我可以將特定內容加載到該片段上。如何獲取當前片段的ID?

我在上FragmentPagerAdapter爲getItem(INT位置)方法試圖

extras.putInt(Globals.KEY_CATEGORY_POSITION, position); 
fragment.setArguments(extras); 

然後,我得到片段類中片段的位置。當我這樣做的時候,當我打印出每個片段的位置時,我會從0到7,但是然後所有片段都增加到7,因此它們全都成爲相同的片段。

是否有任何其他方式獲得每個片段的ID?

+0

你可以使用標籤屬性來標識ViewPager中的片段 –

回答

3

這裏是一個相當不錯的例子裏面:

https://github.com/JakeWharton/ActionBarSherlock/blob/master/actionbarsherlock-samples/fragments/src/com/actionbarsherlock/sample/fragments/FragmentPagerSupport.java

當您創建片段:

 Bundle args = new Bundle(); 
     args.putInt("num", num); 
     f.setArguments(args); 

然後在片段:

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mNum = getArguments() != null ? getArguments().getInt("num") : 1; 
    } 
+0

這個工作完美!非常感謝! –

0

拋出此您FragmentPagerAdapter :)

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