数据未添加到 Firebase 实时数据库

Data is not getting added to Firebase Realtime Database

我一直在关注实时数据库教程,本教程最后更新于 2020 年 12 月 31 日,来自 GeeksForGeeks-how-to-save-data-to-the-firebase-realtime-database-in-android 但对我来说,数据没有添加到数据库中

我在 Android Studio 中使用过 Firebase 助手

这是主要的Activity,它只有 2 个按钮,用于添加数据和查看它们的活动

Java 主文件Activity:


package com.anurag.newemsapp;

import androidx.appcompat.app.AppCompatActivity;

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

public class MainActivity extends AppCompatActivity {

    Button btnAdd, btnView;

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

        btnAdd = findViewById(R.id.btnAdd);
        btnView = findViewById(R.id.btnView);

        btnAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent a = new Intent(MainActivity.this, AddActivity.class);
                startActivity(a);
            }
        });
        
      // the View button is disabled for time-being

    }
}

Add Activity, 这是我接受用户输入并尝试将数据保存在 Firebase

中的地方

Java 添加文件Activity

package com.anurag.newemsapp;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

public class AddActivity extends AppCompatActivity {

    private EditText etAddEid, etAddEname;
    private Button btnAddSave;


    FirebaseDatabase firebaseDatabase;
    DatabaseReference databaseReference;

    Employee employee;

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

        etAddEid = findViewById(R.id.etAddEid);
        etAddEname = findViewById(R.id.etAddEname);

        firebaseDatabase = FirebaseDatabase.getInstance();

        databaseReference = firebaseDatabase.getReference("Employee");

        employee = new Employee();

        btnAddSave = findViewById(R.id.btnAddSave);

        btnAddSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                String id = etAddEid.getText().toString();
                String name = etAddEname.getText().toString();

                if (id.length() == 0 && name.length() == 0) {
                    Toast.makeText(AddActivity.this, "Please add some data.", Toast.LENGTH_SHORT).show();
                } else {
                    addDataToFirebase(id, name);
                }
            }
        });
    }

    private void addDataToFirebase(String id, String name) {
        employee.setEmployeeId(id);
        employee.setEmployeeName(name);
        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                databaseReference.push().setValue(employee);
                Toast.makeText(AddActivity.this, "data added", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {
                Toast.makeText(AddActivity.this, "Fail to add data " + error, Toast.LENGTH_SHORT).show();
            }
        });
    }
}

现在,当我按下“保存”按钮时,它会执行验证部分,但是 addDataToFirebase 似乎不起作用。 我没有抛出错误,应用程序运行得很好。只是没有添加到 Firebase 实时数据库的数据

我在项目级别添加了 google-services.json 文件,从 firebase 控制台手动下载后

所以,解决这个问题的方法是,

将数据库 URL 传递给 FirebaseDatabase.getInstance() 函数。您可以在 Firebase 控制台上找到它。仅当数据库位置设置为 US-Central.

以外的任何内容时,您才应该这样做

我按照 Android Studio Firebase 助手

上的说明在 asia-southeast1 上设置了我的数据库

我只需要将数据库 URL 添加到 FirebaseDatabase.getInstance() 函数中,就像这样, FirebaseDatabase.getInstance(URL)