Android多Activity应用崩溃求助:点击按钮后应用停止运行
定位并修复你的多Activity应用崩溃问题
嘿,我帮你找到了两个导致应用崩溃的关键问题,咱们一步步来解决:
问题1:MainActivity中控件初始化顺序错误
在MainActivity的onCreate方法里,你先调用了findViewById去获取控件,然后才加载布局文件。这时候布局还没被渲染,main_edit和main_activity_button都会是null,当你点击按钮调用main_edit.getText().toString()时,就会触发NullPointerException(空指针异常),直接导致应用崩溃。
错误代码片段:
@Override protected void onCreate(Bundle savedInstanceState) { main_activity_button = findViewById(R.id.main_activity_button); main_edit = findViewById(R.id.main_edit); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }
修正后的代码:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 先加载布局 // 布局加载完成后再获取控件实例 main_activity_button = findViewById(R.id.main_activity_button); main_edit = findViewById(R.id.main_edit); }
问题2:SecondActivity代码不完整
你贴出的SecondActivity.java代码没有写完,在获取Intent的Extra时突然中断了。这种不完整的代码不仅无法通过编译,即使强行运行也会因为类结构不合法而崩溃。
补全后的SecondActivity代码:
package rinorapps.com.multiactivity; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.EditText; public class SecondActivity extends AppCompatActivity { private EditText second_edit; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second_activity); // 初始化EditText控件 second_edit = findViewById(R.id.second_edit); // 获取从MainActivity传递过来的Intent Intent intent = getIntent(); String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); // 将传递过来的消息显示到EditText中 second_edit.setText(message); } }
额外检查点
- 确保你的
strings.xml文件中包含了所有用到的字符串资源(比如@string/main_activity_title_text等),如果缺少这些资源也可能导致运行时崩溃。 - AndroidManifest.xml中的Activity声明看起来是正确的,不需要修改。
按照上面的修正步骤调整代码后,重新编译运行应用,应该就能正常从MainActivity跳转到SecondActivity并传递输入内容啦~
内容的提问来源于stack exchange,提问作者Dudu Krem
相关产品推荐
相关产品推荐

