Java 从“活动”导航到TabLayout/ViewPager片段

Java 从“活动”导航到TabLayout/ViewPager片段,java,android,android-fragments,Java,Android,Android Fragments,我试图找出如何从一个活动导航到一个由单独的活动托管的片段 更复杂的是,目标活动承载一个包含3个独立片段的TabLayout/ViewPager。以下是与TabLayout/ViewPager关联的适配器的代码。我正在尝试导航到TabLayout/ViewPager的“NewFragment”部分: public class SectionPagerAdapter extends FragmentPagerAdapter { public SectionPagerAdapter(Fra

我试图找出如何从一个活动导航到一个由单独的活动托管的片段

更复杂的是,目标活动承载一个包含3个独立片段的TabLayout/ViewPager。以下是与TabLayout/ViewPager关联的适配器的代码。我正在尝试导航到TabLayout/ViewPager的“NewFragment”部分:

 public class SectionPagerAdapter extends FragmentPagerAdapter {

    public SectionPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                return new TrendingFragment();
            case 1:
                return new FollowingFragment();
            case 2:
                return new NewFragment();
            default:
                return new TrendingFragment();
        }
    }

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

    @Override
    public CharSequence getPageTitle(int position) {
        switch (position) {
            case 0:
                return getResources().getString(R.string.trending_text);
            case 1:
                return getResources().getString(R.string.following_text);
            case 2:
                return getResources().getString(R.string.new_text);
            default:
                return getResources().getString(R.string.trending_text);
        }
    }
}

我认为我必须使用意图,但我感到困惑的是如何确保活动加载新片段,而不是选项卡中的第一个片段TrendingFragment。

您可以尝试这样的方法

在第一项活动中:

int position = the fragment position in the target activity you want to open;
Intent intent = new Intent(getActivity(), TargetActivity.class);
intent.putExtra("fragmentPosition", position);
startActivity(intent);
在视图寻呼机初始化后,输入第二个活动:

Intent intent = getIntent();
int fragmentPosition = intent.getIntExtra("fragmentPosition");
viewPager.setCurrentItem(fragmentPosition);

希望有帮助

下面的答案可以帮到你!我同意,这是可行的,但是可能需要事先检查bundle是否为null,以确定是加载第一个选项卡还是加载来自上述活动的所需选项卡