Android页面传值报错:NullPointerException问题求助
问题排查与解决方案
核心错误原因
报错java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference,本质是dua Activity中找不到要赋值的TextView控件:
- 你在
dua.java里用textView = findViewById(R.id.test)查找控件,但对应的activity_dua.xml中的TextView没有设置android:id="@+id/test"属性,导致findViewById返回null,后续调用setText触发空指针异常。
修复步骤
1. 给activity_dua.xml的TextView添加id属性
修改activity_dua.xml中的TextView代码,补充id:
<TextView android:id="@+id/test" <!-- 新增这一行 --> android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="Value" android:textColor="@color/black" android:textSize="30sp"/>
2. 优化Intent数据获取逻辑(可选但推荐)
当前代码中getIntent().getExtras().getString("Value")如果Intent没有携带额外数据,getExtras()会返回null,也会触发空指针。建议添加空判断:
修改dua.java的onCreate方法:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dua); textView = findViewById(R.id.test); // 优化数据获取逻辑 if(getIntent() != null && getIntent().getExtras() != null){ st = getIntent().getExtras().getString("Value"); // 避免st为null时显示空内容 textView.setText(st != null ? st : "无数据"); } else { textView.setText("无数据"); } }
3. 规范Java类命名(可选)
按照Java开发规范,Activity类名首字母应大写,建议将dua.java重命名为DuaActivity.java,同时修改AndroidManifest.xml中的对应配置:
<activity android:name=".DuaActivity" android:exported="false" />
并同步修改MainActivity中跳转的Intent代码:
Intent intent = new Intent(MainActivity.this, DuaActivity.class);
验证修复
完成上述修改后,重新编译运行App:
- 在MainActivity的输入框中输入内容,点击submit按钮,DuaActivity会正常显示输入的内容,不会再出现崩溃。
内容的提问来源于stack exchange,提问作者StressCodingCok
相关产品推荐
相关产品推荐

