You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Fragment接收Bundle值为null ViewPager总打开首页如何解决

问题根因

你的核心问题有2个:

  1. ArticleActivity拿到RecyclerView传入的点击position后,仅把值传给了PagerAdapter,但没有主动设置ViewPager的当前选中项,ViewPager默认始终展示第0页,这是你始终看到第一页的核心原因。
  2. ScreenSlidePagerAdapter存在冗余硬编码逻辑,部分场景下会导致索引越界、参数匹配错误。

具体修改步骤

1. 修改ArticleActivity的setUpPager方法

给ViewPager主动设置选中的position,代码如下:

private void setUpPager(){
    PagerAdapter pagerAdapter=new ScreenSlidePagerAdapter(getSupportFragmentManager(), FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT, newsList);
    viewPager.setAdapter(pagerAdapter);
    // 新增这行,设置ViewPager默认展示点击的对应页面,第二个参数false表示不需要滚动动画
    viewPager.setCurrentItem(position, false);
}

2. 重构ScreenSlidePagerAdapter,删除冗余硬编码

你现有代码里的switch分支完全没必要,硬编码10页也容易和实际接口返回的数据量不匹配,修改后代码如下:

public class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
    private NewsList newsList;

    public ScreenSlidePagerAdapter(FragmentManager fragmentManager, int behavior, NewsList newsList){
        super(fragmentManager, behavior);
        this.newsList = newsList;
    }
    public Fragment getItem(int position) {
        // 直接创建对应position的Fragment即可,不需要冗余判断
        return ArticleFragment.newInstance(newsList, position);
    }

    @Override
    public int getCount() {
        // 动态取实际数据的长度,不要硬编码10
        return newsList.getNewsList().size();
    }
}

3. 补充序列化检查

确认你的NewsList类和内部持有的News类都实现了Serializable接口,否则跨页面传参时会出现序列化失败,导致Bundle拿到的参数为空。

4. 可选优化(增加容错逻辑)

在ArticleFragment的onCreate里增加参数异常的容错判断,避免崩溃:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getArguments() != null) {
        mNewsList = (NewsList) getArguments().getSerializable(ARG_PARAM1);
        mPosition = getArguments().getInt(ARG_PARAM2, -1);
        // 如果参数异常直接返回,避免后续索引越界
        if(mNewsList == null || mPosition <0 || mPosition >= mNewsList.getNewsList().size()){
            return;
        }
    }
}

修改完成后重新运行即可解决点击任意条目始终打开第一页的问题。

内容的提问来源于stack exchange,提问作者navi1111

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:06:02