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

Android中Intent跨Activity传递数据失败问题求助

Android跨Activity传递数据始终为null的排查与解决

问题描述

跨Activity传递字符串数据时,严格按照官方步骤实现,但接收端始终获取到null。已确认发送的url122本身是字符串类型,尝试过直接传递、toString()、getText().toString()等方式均无效。

发送代码:

Intent intent = new Intent(this, Osnova.class);
intent.putExtra("url122", url122.toString());
startActivity(intent);

接收代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_osnova);
    Intent intent = getIntent();
    String url = intent.getStringExtra("url122"); 
}

排查与解决步骤

  • 确认数据源本身有效性
    在发送端添加日志打印,先验证url122的值是否正常:

    Log.d("SendDebug", "url122 before send: " + url122);
    

    如果此处打印为null,问题根源在数据源本身,和Intent传值逻辑无关。

  • 检查Activity启动模式
    若Osnova在Manifest中设置了launchMode="singleInstance"或singleTask,新启动的Intent不会携带额外数据,而是复用已有实例。需在onNewIntent()中获取新Intent数据:

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent); // 更新当前Activity的Intent实例
        String url = getIntent().getStringExtra("url122");
        // 后续数据处理逻辑
    }
    
  • 校验键名一致性
    反复核对发送和接收的键名"url122",确保大小写、拼写完全一致,任何字符差异都会导致获取不到数据。

  • 改用Bundle封装传递
    尝试用Bundle包裹数据后传递,排查是否为Intent直接传值的异常:
    发送端:

    Intent intent = new Intent(this, Osnova.class);
    Bundle bundle = new Bundle();
    bundle.putString("url122", url122);
    intent.putExtras(bundle);
    startActivity(intent);
    

    接收端:

    Bundle bundle = getIntent().getExtras();
    if (bundle != null) {
        String url = bundle.getString("url122");
    }
    
  • 排查多启动路径干扰
    确认Osnova是否存在其他启动入口(比如隐式Intent、通知跳转、桌面快捷方式等),若通过这些路径启动,Intent不会携带url122数据,导致获取结果为null。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:15:36