【问题标题】:Data is not getting added to Firebase Realtime Database [duplicate]数据未添加到 Firebase 实时数据库 [重复]
【发布时间】:2022-02-13 00:07:06
【问题描述】:

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

我在 Android Studio 中使用过 Firebase 助手

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

MainActivity 的 Java 文件:


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

    }
}

添加活动,这是我接受用户输入并尝试将数据保存在 Firebase 中的地方

AddActivity 的 Java 文件

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 控制台手动下载后

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

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

    将数据库 URL 传递给 FirebaseDatabase.getInstance() 函数。您可以在 Firebase 控制台上找到它。仅当数据库位置设置为 US-Central 以外的任何内容时,您才应该这样做。

    按照 Android Studio Firebase Assistant

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

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

    【讨论】:

      猜你喜欢
      • 2021-10-04
      • 2021-03-24
      • 2020-09-20
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      • 2021-09-10
      • 1970-01-01
      • 2019-01-20
      相关资源
      最近更新 更多