J'ai un problème: la base de données Firebase ne fonctionne pas et je ne comprends pas pourquoi cela s'est produit (impossible de publier des données sur le serveur, lorsque j'appuie sur le bouton pour envoyer des données - rien ne se passe, les données ne sont pas enregistrées dans serveur).
Regardez mon code:
"rules": { ".read": true, ".write": true }
Ma classe de constructeur pour envoyer des données à une base de données:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:padding="40dp" android:orientation="vertical" android:gravity="center" android:layout_height="match_parent"> <ImageView android:layout_width="200dp" android:src="@color/cardview_dark_background" android:layout_marginBottom="30dp" android:layout_height="200dp"/> <EditText android:layout_width="match_parent" android:id="@+id/item_name" android:text="Description" android:layout_height="wrap_content"/> <EditText android:text="Name of product" android:layout_width="match_parent" android:id="@+id/item_description" android:layout_height="wrap_content"/> <Button android:id="@+id/add_item_to_db_button" android:layout_width="match_parent" android:text="Add" android:layout_height="wrap_content"/> </LinearLayout>
Mes dépendances ( google ()
et jcenter ()
Est activé dans Gradle code>):
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.core:core-ktx:1.2.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'com.google.android.material:material:1.1.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' // Firebase implementation 'com.google.firebase:firebase-analytics:17.2.2' implementation 'com.google.firebase:firebase-database:19.2.1' implementation 'com.google.firebase:firebase-auth:19.2.0' implementation 'com.google.firebase:firebase-core:17.2.2' implementation 'com.firebaseui:firebase-ui:0.6.2' implementation 'com.google.android.gms:play-services-gcm:17.0.0' implementation 'com.google.android.gms:play-services-auth:17.0.0' implementation 'com.firebaseui:firebase-ui-auth:4.3.1' } apply plugin: 'com.google.gms.google-services'
Mon fichier XML
:
class Member { lateinit var itemName: String lateinit var itemDescription: String constructor() constructor(itemName: String, itemDescription: String) { this.itemName = itemName this.itemDescription = itemDescription } }Et enfin, les règles de base de données:
private var db = FirebaseDatabase.getInstance() private lateinit var dbReference: DatabaseReference override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) setSupportActionBar(toolbar) dbReference = db.reference.child("member") add_item_to_db_button.setOnClickListener { dbReference.push() .setValue(Member(item_name.text.toString(), item_description.text.toString())) } }
Je ne comprends pas pourquoi db ne fonctionne pas. J'ai essayé de plusieurs façons a été publié dans StackOverflow
- n'aide pas.
4 Réponses :
Vous avez besoin d'un réseau valide et de cette autorisation dans vos fichiers manifestes. Vérifiez votre fichier manifeste.
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Désolé, ça n'aide pas.
Remplacez votre classe par une classe de données:
data class Member(val itemName : String, val itemDescription : String) { constructor() : this("", "") }
A essayé. Ça n'aide pas. Dans ce cas, situation très intéressante, car im dans le projet précédent utilise un constructeur similaire à ce que j'ai en ce moment, et tout a bien fonctionné.
Eh bien, toutes les personnes qui ont essayé de m'aider - merci beaucoup;) Dans mon cas, tous les moyens ne m'ont pas aidé, alors j'ai essayé de connecter Firebase DB
à un autre compte Google
puis connectez Firebase Database
, résultat - tout fonctionne bien.
J'ai rencontré ce problème. Mais je ne trouve pas de solution permanente. De la communauté Firebase, j'ai reçu un e-mail.
Nous avons reçu plusieurs rapports du même problème avec différents fournisseurs de FAI en Inde, mais il s'agit d'un problème avec le réseau des FAI qui est hors de notre portée et de notre contrôle, néanmoins nous travaillons avec des fournisseurs locaux pour essayer de restaurer les services dès que possible, pour cela nous recueillons autant d'informations que possible sur le problème, nous vous serions reconnaissants de bien vouloir nous fournir le nom de votre FAI.
Nous vous recommandons de contacter votre FAI pour demander plus de détails et d'informations sur le dépannage afin de trouver la cause principale de ce problème, car nous pouvons confirmer que le problème n'est pas de notre côté.
Toutes nos excuses pour ne pas pouvoir vous aider davantage, mais assurez-vous que nous travaillons toujours pour le remettre en marche.
wat ne fonctionne pas
Désolé, j'ai mis à jour une question. Les données ne sont pas publiées dans la base de données. Après avoir cliqué sur le bouton, rien ne se passe.
Votre projet est-il connecté à Firebase?
Sûr. Je suis connecté à mon projet.
Vous êtes sûr de ne pas manquer
FirebaseApp.initializeApp (this)
? Si c'est le cas, collez-le simplement comme première ligne dansOnCreate
ou dans Application Class.Pouvez-vous essayer ça? dbReference.setValue (Membre (nom_élément.text.toString (), description_élément.text.toString ()))
Sec, je vais l'essayer
Désolé, n'a pas aidé.
Pouvez-vous essayer ceci s'il vous plaît? dbReference = db.getReference.child ("membre") au lieu de dbReference = db.reference.child ("membre")
A essayé.
référence
dans Kotlin en utilisant à la placegetReference ()
\setReference ()
.Ma dernière idée est que vous devriez utiliser ce code dans la méthode onCreate. private var db = FirebaseDatabase.getInstance ()
A essayé. Ça n'aide pas.
Tout d'abord, arrêtez d'ignorer les erreurs potentielles. Essayez d'attacher un écouteur à l'opération de valeur définie, obtenez-vous quelque chose imprimé dans le logcat? Veuillez également répondre avec @AlexMamo
Vérifiez quel identifiant unique est généré lors du push et s'il réussit les données de publication Même si saveValue échoue, vous déboguez avec la clé ex DatabaseReference pushPostRef = postsRef.push (); // Récupère l'identifiant unique généré par un push () String postId = pushPostRef.getKey ();
De même que vous utilisez dbReference.push (). SetValue, ajoutez un onCompleteListener pour voir si l'appel réussit.
@ Build3r, ok je vais l'essayer.
Avez-vous essayé d'afficher votre base de données à partir de votre console de projet? J'ai eu ce même problème avec mon application Web au cours des 5 dernières heures. Je ne peux même pas voir mes données sur la console de la base de données de mon projet
@sudo_kaizen, oui, je vérifie toutes les mises à jour dans la console.
Essayez d'ajouter des écouteurs de complétion et consignez les résultats pour obtenir plus de contexte: firebase .google.com / docs / database / android /…