Android调用startActivity()启动Intent时应用崩溃问题排查
问题:点击MainActivity按钮启动Activity2时应用崩溃退出
我正在学习Android开发中的Intent用法,点击MainActivity内的按钮启动另一个Activity时,Demo应用总会崩溃退出。我的代码与网上教程几乎一致,修改过API版本仍未解决。
MainActivity代码:
package com.example.myapplication import android.content.Intent import android.os.Bundle import android.widget.Button import androidx.activity.ComponentActivity class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val btnNext = findViewById<Button>(R.id.btnNext) btnNext.setOnClickListener { val i = Intent(this, Activity2::class.java) startActivity(i) } } }
Activity2代码:
package com.example.myapplication import androidx.appcompat.app.AppCompatActivity import android.os.Bundle class Activity2 : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_2) } }
可能的原因及解决方法
未在AndroidManifest.xml中注册Activity2
Android系统要求所有Activity必须在清单文件中声明,这是最常见的崩溃原因。打开AndroidManifest.xml,在<application>标签内添加Activity2的注册代码:<activity android:name=".Activity2" android:exported="false" />注:若应用目标API为31(Android 12)及以上,
exported属性为必填项。如果不需要外部应用启动此Activity,设为false即可;若需要则设为true。布局文件异常
检查是否存在activity_2.xml布局文件,且文件内无XML语法错误。同时确认Activity2中setContentView(R.layout.activity_2)的布局ID拼写完全正确,避免因找不到布局导致崩溃。上下文(Context)引用问题
虽然代码中this的使用看似正确,但Lambda表达式中偶尔会出现上下文失效的情况。可以尝试明确指定Activity上下文:val i = Intent(MainActivity@this, Activity2::class.java)按钮ID不匹配
确认activity_main.xml中的按钮ID确实是btnNext,避免findViewById找不到控件引发空指针异常(这种情况在Logcat中会明确提示NullPointerException)。
内容的提问来源于stack exchange,提问作者Long
相关产品推荐
相关产品推荐

