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

Android Fragment间Bundle传RecyclerView点击位置报空指针

问题核心原因

你在RecyclerView条目点击回调中,仅创建了GalleryFragment实例并为其设置了Bundle参数,但没有执行Fragment事务提交逻辑,将这个绑定了参数的实例真正添加/替换到界面上显示。当前界面实际加载的GalleryFragment是无参数的其他实例,因此调用getArguments()会返回null,触发空指针异常。
另外你之前尝试把传参逻辑放到第一个Fragment的onCreate方法中无效,是因为onCreate执行时机远早于用户点击RecyclerView的时机,此时点击回调还没触发,position还未被赋值,根本拿不到正确的传值。
适配器部分的点击回调传position逻辑没有问题,本次异常和适配器代码无关。

修复方案
  • 补全Fragment跳转提交逻辑,确保绑定了参数的GalleryFragment实例被实际加载显示
    在第一个Fragment的onclic回调中,setArguments()完成后立刻执行Fragment提交操作,参考代码如下:
    @Override
    public void onclic(int position) {
        System.out.println(position);
        Toast.makeText(getActivity(), "aight", Toast.LENGTH_SHORT).show();
        thepostion = position;
        GalleryFragment fragment = new GalleryFragment();
        Bundle bundle = new Bundle();
        bundle.putInt("themed", thepostion);
        fragment.setArguments(bundle);
    
        // 以下是你之前遗漏的Fragment提交逻辑,替换为你项目实际使用的导航方式即可
        requireActivity().getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.你的Fragment容器布局ID, fragment)
                .addToBackStack(null) // 需要支持返回上一个Fragment时保留,不需要可删除
                .commit();
    }
    
    如果你项目使用Navigation组件导航,不要手动new Fragment,直接调用navigate方法时传入Bundle参数即可。
  • 给目标Fragment的参数读取增加空安全判断,避免极端场景崩溃
    在GalleryFragment读取参数时增加非空判断,参考代码:
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle bundle = getArguments();
        if (bundle != null) {
            // 第二个参数是key不存在时的默认值,避免返回默认0导致业务逻辑异常
            int x = bundle.getInt("themed", -1);
            System.out.println("gallery" + x);
        } else {
            // 无参数时的兜底逻辑,比如弹出提示、返回上一页
        }
    }
    
注意事项

setArguments()方法必须在Fragment被提交到FragmentManager之前调用,你之前的写法是设置完参数后没有提交对应实例,相当于创建了一个带参数的Fragment对象但从未使用,参数自然无法被目标页面拿到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 12:24:59