Android Studio向Firebase添加数据时遭遇@Override、getException与@NonNull相关错误,求正确代码示例
修正Firebase数据添加代码的问题
我帮你梳理下代码里的核心问题,然后给你修正后的完整代码,解决注解不识别、方法无法调用以及逻辑错误的问题:
问题分析
- 语法结构错误:你错误调用了
addOnClickListener(这是UI控件的点击监听方法),Firebase数据库写入应该用setValue()后绑定addOnCompleteListener;同时你的匿名内部类写法有语法错误,括号和分号的位置完全不对。 - 注解/方法未识别:缺少必要的导入包,比如
@NonNull、Task、OnCompleteListener对应的Firebase和AndroidX注解包,IDE自然无法识别这些内容。 - 逻辑颠倒:你当前的判断是「任务失败时显示成功提示」,这完全搞反了业务逻辑。
- 冗余代码:
Object setValue;这类无意义的代码可以直接删除。
修正后的完整代码
首先确保你导入了这些必要的包:
import androidx.annotation.NonNull; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import android.widget.Toast;
然后是修正后的核心代码片段(假设是在某个点击事件或方法内):
// 初始化Firebase数据库引用 DatabaseReference budgetRef = FirebaseDatabase.getInstance().getReference("budgets"); // 构造要写入的数据对象 Data data = new Data(budgetItem, date, id, null, Integer.parseInt(budgetAmount), months); // 写入数据到Firebase并监听操作完成状态 budgetRef.child(id).setValue(data).addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { loader.dismiss(); if (task.isSuccessful()) { // 任务成功:显示成功提示并关闭弹窗 Toast.makeText(BudgetActivity.this, "Budget item added successfully", Toast.LENGTH_SHORT).show(); dialog.dismiss(); } else { // 任务失败:显示具体异常信息 if (task.getException() != null) { Toast.makeText(BudgetActivity.this, "Error: " + task.getException().getMessage(), Toast.LENGTH_SHORT).show(); } } } });
额外提示
- 确保你的
Data类符合Firebase序列化要求:类是public的,有默认无参构造函数,所有字段要么是public,要么有对应的getter/setter方法,否则Firebase无法正常读写数据。 - 如果还是提示注解不识别,检查你的Android项目是否引入了AndroidX注解依赖(在Module级别的
build.gradle里添加:implementation 'androidx.annotation:annotation:1.6.0')。
内容的提问来源于stack exchange,提问作者Sabella




