首页 > 解决方案 > 无法将数据添加到 firebasedatabse

问题描述

我刚刚发现了 firebase 并想测试我是否可以将它用作我的 android 应用程序的数据库。我想我正在向它发送数据,但在 firebase 控制台上它显示 nada。我想尽一切办法自己解决它,但似乎我缺乏知识。请赐教:(


import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class home extends AppCompatActivity {

    private FirebaseDatabase mFirebaseI;
    private DatabaseReference mFirebaseD;
    private String uMail;

    EditText userMail; // textbox where i write data to be sent to databse


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        userMail = findViewById(R.id.mail); 
        mFirebaseI = FirebaseDatabase.getInstance();
        mFirebaseD = mFirebaseI.getReference("DataUsers");
        uMail=mFirebaseD.push().getKey();

    }

    public void addUser(String mail)
    {
        DataBaseData users = new DataBaseData(mail); //class i made with just one string attribute
        mFirebaseD.child("Users").child(uMail).setValue(users);
    }

    public void send(){
        addUser(userMail.getText().toString().trim());
    }
}

标签: androidfirebasefirebase-realtime-database

解决方案


Ok so I learned that realtime database is "outdated" and that firestore is way better and easier to use. And it is! So what I did to add just a single "name" to "users" collection is this :

public class home extends AppCompatActivity {

    private FirebaseFirestore mFirestore;
    //private String uMail;

    EditText userMail;
    Button btnSend;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        btnSend = findViewById(R.id.send);
        userMail = findViewById(R.id.mail);

        mFirestore = FirebaseFirestore.getInstance();



        btnSend.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){

                String username = userMail.getText().toString(); //pseudo a save dans la bdd

                Map<String, String> userMap = new HashMap<>(); //hashmap obligatoire pour utiliser firestore

                userMap.put("name", username); // suavegarder le pseudo dans la bdd sous le nom de document "name"

                mFirestore.collection("users").add(userMap).addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
                    @Override
                    public void onSuccess(DocumentReference documentReference) {
                        Toast.makeText(home.this, "added", Toast.LENGTH_SHORT).show();
                    }
                }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {

                        String error = e.getMessage();
                        Toast.makeText(home.this, "failed:" + error, Toast.LENGTH_SHORT).show();
                    }
                });

            }
        });

    }

I think it's pretty simple so I didn't add any comments for you guys I mean if I understand it then anyone can haha! anyways thanks for trying to help me out!


推荐阅读