【问题标题】:How do you get the current fragment's ID?你如何获得当前片段的ID?
【发布时间】:2013-07-12 02:23:17
【问题描述】:

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

我试过了

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

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

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

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

【问题讨论】:

  • ViewPager中可以使用tag属性来识别片段

标签: android android-fragments android-viewpager fragmentpageradapter


【解决方案1】:

这是一个很好的例子:

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

【讨论】:

    【解决方案2】:

    把它扔进你的 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-05
      • 2021-10-17
      • 1970-01-01
      • 2022-06-11
      • 1970-01-01
      • 2012-03-06
      • 2016-12-08
      • 2021-12-15
      相关资源
      最近更新 更多