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

Android通过Intent传递变量至其他类识别不到name变量如何解决

问题原因

你的代码存在两处核心错误,共同导致了MainActivity2中取值报错:

  1. MainActivity中创建了存储姓名的Bundle对象,但未将该Bundle绑定到跳转用的Intent实例上,导致MainActivity2获取到的receiverBundle为空,调用getString方法时触发空指针异常。
  2. 读取输入框内容的时机错误:你在MainActivity的onCreate生命周期就执行了name.getText().toString(),此时页面刚完成初始化,用户还未输入任何内容,就算参数传递成功也只会拿到空字符串,应该在点击按钮的回调中再读取输入框的实时内容。

修正后的代码

1. MainActivity.java

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
    EditText name;
    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        name  = findViewById(R.id.name);
        button = findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 点击按钮时再读取输入框内容
                String nameInString = name.getText().toString();
                Intent senderIntent = new Intent(getApplicationContext(), MainActivity2.class);
                Bundle senderBundle = new Bundle();
                senderBundle.putString("name", nameInString);
                // 把Bundle绑定到Intent上
                senderIntent.putExtras(senderBundle);
                startActivity(senderIntent);
            }
        });
    }
}

2. MainActivity2.java(可选优化,增加空判避免崩溃)

import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity2 extends AppCompatActivity {
    TextView resultName;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        resultName = findViewById(R.id.nameReceived);

        Intent receiverIntent = getIntent();
        Bundle receiverBundle = receiverIntent.getExtras();
        String receivedName = "未获取到输入内容";
        // 增加空判,避免Bundle为空时崩溃
        if (receiverBundle != null) {
            receivedName = receiverBundle.getString("name");
        }
        resultName.setText(receivedName);
    }
}

修改完成后重新运行项目,输入姓名点击发送,MainActivity2即可正常展示获取到的姓名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:57:05