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

Android应用点击MainActivity按钮崩溃问题排查求助

Android跳转Activity崩溃排查方案

我是Android开发新手,正在通过开发一款应用练习从Android Developers上学到的内容。该应用的MainActivity页面显示两个按钮,点击后应分别启动StudyActivity和TestActivity,这两个页面需通过ViewHolder展示学习/测试卡片列表。

应用编译无报错,但点击任意一个按钮都会崩溃,不清楚问题出在哪里。以下是相关代码:

MainActivity代码

package com.r.cxrslides

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.r.cxrslides.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding
    private lateinit var listIntent: Intent

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // Setup view binding
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        // Launch the StudyActivity on verticalBtn click
        binding.studyBtn.setOnClickListener {
            listIntent = Intent(this, StudyActivity::class.java)
            startActivity(listIntent)
        }

        // Launch the TestActivity on horizontalBtn click
        binding.testBtn.setOnClickListener {
            listIntent = Intent(this, TestActivity::class.java)
            startActivity(listIntent)
        }

    }

}

StudyActivity代码

package com.r.cxrslides

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.DividerItemDecoration
import com.r.cxrslides.adapter.SlideAdapter
import com.r.cxrslides.data.Datasource
import com.r.cxrslides.databinding.ActivityStudyBinding

class StudyActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        
        val binding = ActivityStudyBinding.inflate(layoutInflater)
        setContentView(binding.root)
       
        val myDataset = Datasource.slides
        
        val recyclerView = binding.studyRecyclerView
        recyclerView.adapter = SlideAdapter(this, myDataset)

        binding.studyRecyclerView.setHasFixedSize(true)

        // Enable up button for backward navigation
        supportActionBar?.setDisplayHomeAsUpEnabled(true)

      
    }
}

排查步骤:

  • 检查Manifest注册:所有Activity必须在AndroidManifest.xml中声明,示例:
<activity android:name=".StudyActivity" />
<activity android:name=".TestActivity" />

未注册Activity会直接抛出ActivityNotFoundException导致崩溃,这是跳转失败最常见的原因。

  • 隔离RecyclerView逻辑:暂时注释掉StudyActivity中RecyclerView相关代码,只保留页面初始化逻辑,测试跳转是否正常。如果跳转正常,说明问题出在SlideAdapter或数据类:

    • 确认Datasource.slides是否已正确初始化,避免传入空列表引发Adapter异常
    • 检查SlideAdapter的实现:比如onCreateViewHolder中布局ID是否正确、onBindViewHolder中控件绑定是否存在空指针
  • 查看崩溃日志:打开Android Studio的Logcat,筛选Error级别日志,找到具体异常信息。比如:

    • ActivityNotFoundException:对应Manifest未注册Activity
    • NullPointerException:可能是布局ID不匹配、Adapter中控件未找到、数据为空等
  • 验证View Binding正确性:确认activity_study.xml中存在studyRecyclerView这个ID,避免因View Binding无法找到控件导致空指针。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 19:41:04