llf2580 2023-04-02 19:20 采纳率: 66.7%
浏览 34
已结题

如何在 一个Activity中跳转另一个Activity的fragment?

我利用fragment+ViewPager实现了底部导航栏功能,MainActivity布局是上面一个ViewPager,下面一个BottomNavigationView
我是参考https://blog.csdn.net/MrsZhang1995/article/details/111658786 做的底部导航栏
fragment是直接右击项目包-->New-->Fragment-->Fragment(Blank)创建的,四个fragment各有一个布局文件,所以我的fragment应该没有id。
现在我想从其他Activity点击按钮跳转MainActivity的第三个fragment,应该怎么写?
我的想法是跳转时给intent传一个int型值,0-3代表想跳转第0-3个fragment,但是不知道MainActivity怎么改
其他Activity设置跳转的代码:

Intent intent = new Intent(getBaseContext(), MainActivity.class);
intent.putExtra("id",3);
startActivity(intent);

MainActivity代码:不知道……处应该怎么写

public class MainActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener, ViewPager.OnPageChangeListener {
    ViewPager viewPager;//用于展示不同的fragment
    BottomNavigationView bottomNavigationView;//底部导航栏
    HomeFragment homeFragment = new HomeFragment();//主界面
    CommunityFragment communityFragment = new CommunityFragment();//社区
    MallFragment mallFragment = new MallFragment();//商城
    MineFragment mineFragment = new MineFragment();//我的
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();//初始化界面
        int id = getIntent().getIntExtra("id",0);
        switch(id) {
            case 0://显示第0个fragment:HomeFragment
                …………
                break;
            case 1://显示第1个fragment: CommunityFragment
                …………
                break;
            case 2://显示第2个fragment:MallFragment
                …………
                break;
            case 3://显示第3个fragment:MineFragment
                …………
                break;
        }
    }
    private void init() {
        //获取页面标签对象
        viewPager = findViewById(R.id.viewPager);
        viewPager.setOnPageChangeListener(this);//添加页面切换监视器
        bottomNavigationView = findViewById(R.id.bottomNavigation);
        bottomNavigationView.setOnNavigationItemSelectedListener(this);//添加导航栏选择监视器
        viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {//给页面添加适配器
            @NonNull
            @Override
            public Fragment getItem(int position) {
                switch(position) {
                    case 0:return homeFragment;
                    case 1:return communityFragment;
                    case 2:return mallFragment;
                    case 3:return mineFragment;
                }
                return null;
            }
            @Override
            public int getCount() {//界面个数
                return 4;
            }
        });
    }
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {    }
    @Override
    public void onPageSelected(int position) {
        bottomNavigationView.getMenu().getItem(position).setChecked(true);
    }
    @Override
    public void onPageScrollStateChanged(int state) {    }
    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        viewPager.setCurrentItem(item.getOrder());
        return true;
    }
}
  • 写回答

4条回答 默认 最新

  • wanglp@ 2023-04-03 10:27
    关注

    viewPager.setCurrentItem(position);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月13日
  • 已采纳回答 4月5日
  • 修改了问题 4月2日
  • 创建了问题 4月2日

悬赏问题

  • ¥15 爬取豆瓣电影相关处理
  • ¥15 手机淘宝抓清除消息接口
  • ¥15 C#无selenium
  • ¥15 LD衰减计算的结果过大
  • ¥15 用机器学习方法帮助保险公司预测哪些是欺诈行为
  • ¥15 计算300m以内的LD衰减
  • ¥15 数据爬取,python
  • ¥15 怎么看 cst中一个面的功率分布图,请说明详细步骤。类似下图
  • ¥15 为什么我的pycharm无法用pyqt6的QtWebEngine
  • ¥15 FOR循环语句显示查询超过300S错误怎么办