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

Android Fragment跳转传递CNPJ主键数据失效问题求助

问题修复方案

核心错误原因

你在Register_User_Fragment的跳转逻辑中存在实例使用错误:先创建了Register_Region_Fragment实例并设置了携带CNPJ的参数包,但是调用replace执行跳转时,传入的是全新创建的无参Register_Region_Fragment实例,之前配置好参数的实例没有被实际使用,因此第二屏无法接收到传递的数据。

修复代码

Register_User_Fragment 跳转逻辑修正

将原有跳转部分的代码:

fr = new Register_Region_Fragment();
fr.setArguments(bundle);
transaction.replace(R.id.fragment_container_user, new Register_Region_Fragment());
transaction.commit();

修改为:

fr = new Register_Region_Fragment();
fr.setArguments(bundle);
// 传入已经配置好参数的实例,而非新建实例
transaction.replace(R.id.fragment_container_user, fr);
transaction.commit();

可选优化建议

  • 可以在Register_Region_Fragment中新增静态实例创建方法,统一封装参数传递逻辑,避免后续出现同类传参遗漏问题:
public static Register_Region_Fragment newInstance(String cnpj) {
    Register_Region_Fragment fragment = new Register_Region_Fragment();
    Bundle args = new Bundle();
    args.putString("CNPJ", cnpj);
    fragment.setArguments(args);
    return fragment;
}

后续跳转时直接调用下方代码即可,无需单独处理参数包配置:

transaction.replace(R.id.fragment_container_user, Register_Region_Fragment.newInstance(CNPJ));
  • 可在Register_Region_Fragment的onViewCreated中增加空值判断,避免参数为空时出现异常,同时如果不需要用户修改CNPJ,可以直接将输入框设为不可编辑:
String enterprise = getEnterprise();
if (enterprise != null) {
    cnpj.setText(enterprise);
    cnpj.setEnabled(false);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:39:03