我寫了簡單的Firebase實時資料庫代碼,使用android java代碼在其中插入資料。每當我點擊上傳按鈕時,按鈕被點擊,但Firebase代碼沒有被執行,沒有顯示任何關于資料插入的錯誤資訊或警告。我曾試圖創建許多不同的新專案來測驗相同的代碼,但沒有成功。
我的代碼:
在下面的代碼中,沒有任何方法被SuccessListener()或FailureListener()呼叫,但按鈕被點擊了。
public void onClick(View v) {
if(v.getId()==uploadBtn.getId()){
DatabaseReference ref= FirebaseDatabase.getInstance().getReference().child("Users"/span>)。
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","資料已插入")。
}
}).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"/span>: {
".read"。true。
".write":true, ".write":true.
}
Firebase節點結構:
first-app-default-rtdb:null
build.gradle(專案):
buildscript {
資源庫 {
google()
jcenter()
}
依賴性 {
classpath 'com.android.tools.build:gradle:7.0.2'/span>
classpath 'com.google.gms:google-services:4.3.10'。
}
}
allprojects {
資源庫 {
google()
jcenter()
}
}
任務 clean(type: Delete) {
洗掉rootProject.buildDir
}
build.gradle(應用程式):
應用插件。'com.android.application'。
應用插件。'com.google.gms.google-services'
android {
compileSdkV版本29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.simpleapp"/span>
minSdkV版本26
targetSdkV版本29
版本代碼 1
版本名稱"1.0"。
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"。
}
buildTypes {
發布 {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'。
}
}
編譯選項 {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
依賴性 {
實作 fileTree(dir: 'libs', include: ['*.jar'])
實作 'androidx.appcompat:appcompat:1.3.1'。
實作 'com.google.firebase:firebase-database:20.0.1'。
testImplementation 'junit:junit:4.13'/span>
androidTestImplementation 'androidx.test.ext:junit:1.1.3'/span>
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'。
}
我嘗試了下面的方法,但問題相同:
- 將作業室升級到2020.3
- 添加了Getter和Setters 。
- 創建了新的專案進行檢查 。
- Select,Update,Delete也嘗試做了 。
- .Json檔案是手動添加的 。
- 新的谷歌賬戶已創建并連接 。
- 在真實和模擬器設備上測驗應用程式(7.0 - 11版)
- 清理了幾次專案。在gradle中洗掉并添加了Firebase 。
- 遷移到android jetpack
- 試過VPN和普通連接 Gradle插件升級到最新版本。
- 目標設備改變了,MIN和目標版本改變了 。
- 阻止了反病毒軟體。防火墻被禁用。
- Firebase規則改變。
- 添加了資料庫URL路徑 。
請幫助我。
uj5u.com熱心網友回復:
你可以嘗試以下可能的解決方案:
uj5u.com熱心網友回復:
在你的類中添加setter方法,然后再試一次。
CodePudding
問題出在仿真器的互聯網連接上。設備是離線的。因為我在模擬器上使用了我手機的熱點連接。對于這個問題,我們希望從Firebase或Android Studio獲得資訊日志或警告錯誤資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/318686.html
標籤:
上一篇:在Django中用認證進行測驗
