android - 如何在 FragmentPagerAdapter 的某些覆盖方法中设置 fragment Id?

标签 android android-fragments fragmentpageradapter

我有一个 FragmentPagerAdapter,在 fragment 类中我有一个需要在主 Activity 中使用的公共(public)方法。 在这一点上,我不知道如何访问包含该方法的 fragment 。我可以修改下面类中的某些内容以将 id 或其他内容设置为 fragment 吗?

public class SectionsPagerAdapter extends FragmentPagerAdapter {
    public SectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
            switch (position) {
            case 0:
                return new Fragment_1();
            case 1:
                return new Fragment_2();
            case 2:
                return new Fragment_3();
            }
        return null;
    }

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

    @Override
    public CharSequence getPageTitle(int position) {
        Locale l = Locale.getDefault();
            switch (position) {
            case 0:
                return getString(R.string.fg_1).toUpperCase(l);
            case 1:
                return getString(R.string.fg_2).toUpperCase(l);
            case 2:
                return getString(R.string.fg_3).toUpperCase(l);
            }
        }
        return null;
    }
}

如何设置 fragment ID、 fragment 标记或其他内容以便稍后访问 fragment ?

访问 fragment 方法的任何其他方式都不错。

编辑了更多信息:

我真的迷失了。但是,我也有一个 ViewPager,这些 fragment 与 actionBar 选项卡相关联。

mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);

mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener(){
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    @Override
    public void onPageSelected(int position) {
        actionBar.setSelectedNavigationItem(position);
    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }
});

for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
    actionBar.addTab(actionBar.newTab().setText(mSectionsPagerAdapter.getPageTitle(i)).setTabListener(this));
}

有什么方法可以和 fragment 通信吗?

最佳答案

像这样:

        switch (position) {
        case 0:
            Fragment f = new Fragment_1();
            f.setId(...);
            return f;
        case 1:
            ...
        }

这假设您的 fragment 中有一个 setId 方法。

然而,我所做的是为每个 fragment 定义一个静态字符串 TAG,然后我可以使用 Fragment_1.TAG 访问它。

关于android - 如何在 FragmentPagerAdapter 的某些覆盖方法中设置 fragment Id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32720959/

相关文章:

android - BroadcastReceiver 以便将数据从另一个 Activity 传递到 Fragment

android - 控制 android fragment 创建顺序

android - 回收 FragmentPagerAdapter

android - 无法更新 FragmentPagerAdapter 中的 fragment

android - 如何在android中获得 Intent 的结果?

android - "R cannot be resolved"

c# - Xamarin.Forms - HttpClient SendAsync 中未处理的异常

java - 更新 SQLite Android 时出错

android - Viewpager 的并发症

java - 使用参数将数据从 Activity 发送到 Fragment (Kotlin/Android)