java - 数据未插入 Firebase 实时数据库抛出 Android
问题描述
我编写了简单的 Firebase 实时数据库代码,使用 android java 代码在其中插入数据。每当我单击上传按钮时,都会单击按钮,但不会执行 firebase 代码,而不会显示任何错误消息或有关数据插入的警告。我试图创建许多不同的新项目来测试相同的代码但没有工作。
我的代码:
在下面的代码中,没有从 SuccessListener() 或 FailureListener() 调用任何方法,但单击了按钮。
public void onClick(View v) {
if(v.getId()==uploadBtn.getId()){
DatabaseReference ref= FirebaseDatabase.getInstance().getReference().child("Users");
TestModel tm=new TestModel("Angela","angela@123");
ref.child("Angela").setValue(tm).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d("app","data inserted");
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d("app","failed to inserted: "+e.getMessage());
}
});
}
没有从上面的代码中得到任何错误消息或警告。而且firebase数据库也没有任何变化。
我的 TestModel 类:
public class TestModel {
public String name,passwd;
public TestModel(String name, String passwd) {
this.name = name;
this.passwd = passwd;
}
}
规则:
"rules": {
".read": true,
".write":true
}
Firebase 节点结构:
first-app-default-rtdb:null
build.gradle(项目):
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.0.2'
classpath 'com.google.gms:google-services:4.3.10'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle(应用程序):
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.simpleapp"
minSdkVersion 26
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.firebase:firebase-database:20.0.1'
testImplementation 'junit:junit:4.13'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
我在下面尝试过但同样的问题:
- 升级工作室至 2020.3
- 添加了 Getter 和 Setter
- 为检查而创建的新项目
- Select,Update,Delete 也试过做
- .Json 文件手动添加
- 创建并连接了新的谷歌帐户
- 在 Real 和 Emulator 设备上测试应用程序(版本 7.0 - 11)
- 多次清理项目。在 gradle 中删除并添加了 firebase
- 迁移到安卓喷气背包
- 尝试了 VPN 和正常连接
- Gradle 插件升级到最新版本。
- 目标设备已更改,MIN 和目标版本已更改
- 杀毒软件被阻止。防火墙已禁用。
- Firebase 规则已更改。
- 添加了数据库 URL 路径
请帮我。
解决方案
问题出在模拟器的 Internet 连接上。设备离线。因为我已经为模拟器使用了手机的热点连接。当热点关闭并启动模拟器时,模拟器始终处于离线模式,直到我们重新启动它。
Firebase 或 Android Studio 会针对此问题提供信息日志或警告、错误消息。
推荐阅读
- eclipse-plugin - 在 Eclipse 版本上安装 PMD 时出错:2020-06 (4.16.0)
- python - selenium python chromedriver 下载zip文件
- c# - 向任何 aspx 页面添加 '/[x]' 仍会显示该页面,预期为 404
- excel - 如何将新工作表保存到现有 Excel 工作簿的开头?
- machine-learning - 如何在 tensorflow 2.0 中训练以数组为标签的神经网络,即 [1,0]
- r - R中正确的城市错别字
- html -
我有一个常规的角度材料形式,它使用 numberMaskOptions 将字段值的输入和显示限制为 3 个小数点。(见下面的代码)
这很好,
- javascript - Next.js 动态加载的组件不显示传递的数据
- html - 如何为 Squarespace 创建水平虚线箭头
- git - “git init”之后Mac终端命令变得非常慢