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

Android中EditText值传至另一个布局TextView时程序崩溃求助

解决EditText值传递到另一个Activity TextView崩溃的问题

嘿,我来帮你搞定这个问题!你的程序崩溃核心原因是手动实例化MainActivity——Android里Activity的生命周期完全由系统管理,绝对不能自己new一个Activity对象,这样会导致里面的editText等控件根本没有被初始化,调用getText()的时候必然触发空指针异常,直接崩溃。

正确的做法是用Intent携带数据完成两个Activity之间的通信,这是Android组件间传值的标准方式,下面一步步教你修改:

第一步:修改MainActivity,通过Intent传递EditText内容

在启动SecondActivity的点击事件里,先获取EditText的文本,然后把它放到Intent中:

public class MainActivity extends AppCompatActivity {
    EditText editText;
    TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 高版本SDK无需强制类型转换
        editText = findViewById(R.id.abc);
        textView = findViewById(R.id.go123);
        changeLayout(textView);
    }

    public void changeLayout(TextView textView){
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 获取EditText输入的内容
                String inputContent = editText.getText().toString();
                // 创建Intent,同时携带数据
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                // 用自定义的键名存储数据,后面取数据要用到这个键
                intent.putExtra("USER_INPUT", inputContent);
                startActivity(intent);
            }
        });
    }
}

⚠️ 注意:把原来的second类名改成SecondActivity,遵循Java大驼峰的命名规范,这是业界通用的代码风格。

第二步:修改SecondActivity,从Intent中取出数据并显示

删掉手动new MainActivity的代码,通过getIntent()获取启动当前Activity的Intent,再取出里面的数据:

public class SecondActivity extends AppCompatActivity {
    TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        textView = findViewById(R.id.qwe);
        
        // 获取传递过来的Intent
        Intent receivedIntent = getIntent();
        // 根据之前定义的键名取出数据,设置默认值避免空指针
        String inputText = receivedIntent.getStringExtra("USER_INPUT");
        // 将数据设置到TextView上
        textView.setText(inputText == null ? "" : inputText);
    }
}

额外注意事项

  • 确保你已经在AndroidManifest.xml中注册了SecondActivity,如果没注册,启动Activity时会崩溃:
    <activity android:name=".SecondActivity"/>
    
  • 可以给EditText的内容加非空判断,比如用TextUtils.isEmpty(inputContent)来处理空输入的情况,让程序更健壮。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:42:42