【问题标题】:Android FragmentPagerAdapter with same fragment class具有相同片段类的Android FragmentPagerAdapter
【发布时间】:2015-09-13 09:56:07
【问题描述】:

我正在使用选项卡、选项卡布局、片段和 FragmentPagerAdapter 制作记分应用。该应用程序运行良好,但我不知道如何访问这些片段。在片段中做了一些工作之后,我想访问片段来更新它的分数。如何访问当前片段?

编辑 - 我的主要问题是找到职位。如果我单击选项卡,我可以使用 tabLayout.getSelectedTabPosition() 来获得正确的位置,但是如果我在选项卡之间滑动,viewpager 会以不同的方式处理它,我不知道如何从中找到位置。

public class PagerAdapter extends FragmentPagerAdapter {
    private int numTabs;

    public PagerAdapter(FragmentManager fm, int tabs) {
        super(fm);
        numTabs = tabs;
    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                return makeScoreFrag(1, "Team 1");
            case 1:
                return makeScoreFrag(2, "Team 2");
            case 2:
                return makeScoreFrag(3, "Team 3");
            case 3:
                return makeScoreFrag(4, "Team 4");
            default:
                return null;
        }
    }

    @Override
    public int getCount() {
        return numTabs;
    }

    private ScoreFragment makeScoreFrag(int num, String title){
        Bundle bundle = new Bundle();
        bundle.putInt("score", 0);
        bundle.putInt("number", num);
        bundle.putString("title", title);
        ScoreFragment frag = new ScoreFragment();
        frag.setArguments(bundle);
        return frag;
    }
}

【问题讨论】:

  • 您可以探索为 ViewPager 添加 OnPageChangeListener 以跟踪所选页面是否可以满足您的需求。

标签: android android-fragments fragmentpageradapter android-tablayout


【解决方案1】:

您可以在 FragmentPagerAdapter 中重写 instantiateItem 方法

ScoreFragment[] fragments = new ScoreFragment[numTabs];
@Override
public Object instantiateItem(ViewGroup container, final int position) {
    fragments[position] = (ScoreFragment) super.instantiateItem(container, position);
   return fragments[position];
}

那么当前片段是:

ScoreFragment curFragment = fragments[curTab];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多