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

Android应用点击Add按钮崩溃且ListView跳转Activity失效问题

问题排查与修复方案

我来帮你一步步解决这两个核心问题:点击Add按钮崩溃、ListView项无法跳转至nutritionalInfo页面。


一、修复Add按钮崩溃问题

崩溃的大概率是以下两个原因之一:

1. 缺失TextUtils类导入

你的addFood()方法里用到了TextUtils.isEmpty(name)做非空校验,但代码中没有导入这个类。在addFood类顶部添加导入语句:

import android.text.TextUtils;

2. Food类缺少无参构造函数

Firebase Realtime Database在反序列化Java对象时,强制要求类必须包含无参构造函数。检查你的Food类,若没有则补充:

public Food() {
    // 必须保留空实现,Firebase依赖这个构造函数完成对象反序列化
}

同时要确保Food类的所有字段都有对应的getter方法(比如getFoodId()、getFoodName()),否则不仅ListView无法正确展示数据,后续跳转传值也会失效。


二、修复ListView点击跳转失效问题

这个问题的根源非常明确:你没有在AndroidManifest.xml中注册nutritionalInfo Activity,系统找不到这个页面,自然无法完成跳转,甚至可能间接引发其他崩溃。

修改Manifest文件,添加nutritionalInfo的Activity声明:

<application
    ...>
    <activity android:name=".addFood">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <!-- 新增这一行,注册nutritionalInfo页面 -->
    <activity android:name=".nutritionalInfo" />
</application>

额外优化建议

  1. 代码命名规范:Android开发中,Activity类名建议遵循大驼峰命名法,比如把addFood改成AddFoodActivity,nutritionalInfo改成NutritionalInfoActivity,提升代码可读性。
  2. 利用Logcat排查崩溃:下次遇到应用崩溃,一定要查看Android Studio底部的Logcat面板,里面会显示具体的崩溃原因和代码行,比仅看"Unfortunately app has stopped"能更快定位问题。
  3. Firebase数据库权限:开发阶段可以暂时设置Firebase Realtime Database为公开读写权限(上线后再修改为安全规则),避免因权限问题导致数据读写失败:
{
  "rules": {
    ".read": true,
    ".write": true
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:35:35