当前位置: 首页 > 知识库问答 >
问题:

无法从Android写入Firebase实时数据库

浦毅
2023-03-14

我正在尝试用Firebase制作一个简单的Android应用程序。

目前,我只是试图从Firebase实时保存用户数据库。但由于某种原因它不起作用。另一方面,身份验证工作完美。

数据库本身没有显示任何内容。它总是显示“null”

我一直在关注这个YouTube教程,并一直在做一些类似的事情。

当我尝试创建一个用户并将其发送到数据库时,运行的程序没有给出任何答案。我有一个进度条,一旦setValue(用户)完成,它就不可见了。progressBar永远不会隐形。只是呆在那里旋转。

活动

private ProgressBar progressBar;
FirebaseAuth auth = FirebaseAuth.getInstance();

FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("users");

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

    progressBar = findViewById(R.id.progressBar);
    progressBar.setVisibility(View.INVISIBLE);

    registerButton = findViewById(R.id.registerButton);
    registerButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            registerUser();
        }
    });
}

private void registerUser() {
    String name = nameTV.getText().toString().trim();
    String email = emailTV.getText().toString().trim();
    String pwd = pwdTV.getText().toString().trim();
    String confirmPwd = confirmPwdTV.getText().toString().trim();

    progressBar.setVisibility(View.VISIBLE);

    auth.createUserWithEmailAndPassword(email, pwd)
            .addOnCompleteListener(ActivityRegister.this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        User user = new User(email, name, pwd);

                        myRef.setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(@NonNull Task<Void> task) {
                                if (task.isSuccessful()) {
                                    Toast.makeText(ActivityRegister.this, "User has been registered successfully", Toast.LENGTH_LONG).show();
                                    progressBar.setVisibility(View.GONE);

                                    startActivity(new Intent(ActivityRegister.this, ActivityLogin.class));
                                } else {
                                    Toast.makeText(ActivityRegister.this, "Failed to register. Try again", Toast.LENGTH_LONG).show();
                                    progressBar.setVisibility(View.GONE);
                                }
                            }
                        });
                    } else {
                        Toast.makeText(ActivityRegister.this, "Failed to register. Try again", Toast.LENGTH_LONG).show();
                        progressBar.setVisibility(View.GONE);
                    }
                }
            });

}

依赖性

implementation platform('com.google.firebase:firebase-bom:26.2.0')
implementation 'com.google.firebase:firebase-analytics'
implementation 'com.google.firebase:firebase-database:19.6.0'

共有2个答案

宇文飞翮
2023-03-14

过了一段时间,我终于解决了这个问题。

基本上,我必须从Firebase页面下载google-services.json,并在我的项目中替换为json。

第一次配置firebase时,我一定是做错了什么。

鱼旺
2023-03-14

你能为progressbar添加代码吗?

此外,还应该向setValue添加OnCompleteListener。。。此调用是一项任务,因此如果要确保调用成功,还应为其附加一个侦听器。

 类似资料:
  • 我正在尝试将有关集合用户中注册用户的数据写入我的Cloud Firestone用户,当然它必须与授权中的UID代码相关联(注册/登录系统正常工作并在我的Firebase中编写auth)。 XML注册按钮: JAVA寄存器: 。。。 。。。 在Cloud Firestone中,我刚刚创建了集合用户。我注意到在工具中 ✓ 已连接 但即使我已经点击并似乎构建正确,底部的“将云Firestone添加到你的

  • 首先,我很抱歉我的英语,我希望你能理解。这是我的第一个android应用程序,我尝试使用Firebase进行身份验证和数据库。身份验证工作正常,但我不能读写实时数据库。以下是我的数据库规则和结构: 我试图将数据库中的数据添加到reclyclerview中,但我的代码止步于AddValueEventListener。然后我尝试添加一个简单的数据到数据库,但它也不起作用。我也尝试将相同的代码放入一个活

  • 我正在尝试获取我的用户名,并在应用程序打开时向他/她问好。但我无法根据某个用户的uid获取数据。当我运行应用程序时,祝酒词从未真正出现。 数据库结构 密码

  • 我试图显示一个零件的"loc",如果它的零件号我给。以下是数据结构的样子: 活动代码: getLoc是Product类的getter函数,它返回给定curP对应的“loc”。curP部分表示子值。 逻辑对我来说似乎是正确的,但我没有得到输出。我哪里出了问题?

  • 我设法将数据插入身份验证,但无法插入数据库: 代码: 错误: E/AndroidRuntime:致命异常:主进程:com。实例budgetingapp,PID:11507 java。lang.RuntimeException:在类androidx上找到了名称getText的冲突获取程序。appcompat。小装置。AppCompativeText位于com。谷歌。火基。消防商店。util。Cust

  • 我有一个关于firebase实时数据库规则的问题。 有人创建了一个帐户,该帐户在实时数据库中创建了一个路径: 结构很简单(密钥、用户ID和其他数据)。 这是我的规则: 但现在问题来了。如何允许用户写入此对象?每个拥有代码的人(请参阅BQUyhq)w3D)都可以写入对象id。如果没有代码,他们就无法写入对象id。 有可能发生这样的事吗?如果是的话,我该怎么做呢。