2

我创建了一个带有 8 个片段的 ViewPager,这些片段使用相同的 xml 布局。但是,我希望不同的片段使用不同的内容。我需要获取任何片段的 ID,以便将特定内容加载到该片段上。

我试过了

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

在 FragmentPagerAdapter 的 getItem(int position) 方法中。

然后,我得到了 Fragment 类中片段的位置。当我这样做时,当我打印出每个片段的位置时,我从 0 变为 7,但随后它们都增加到 7,因此它们都变成了同一个片段。

有没有其他方法可以获取每个片段的 ID?

4

2 回答 2

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;
    }
于 2013-07-11T12:55:20.363 回答
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;
}
于 2013-07-11T12:49:30.650 回答