firebase一直响应保存用户信息

img

img

能收到数据但一直停留在保存数据阶段,无法进行下一步


package com.example.bookapp;

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

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Patterns;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.Toast;

import com.example.bookapp.databinding.ActivityRegisterBinding;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

import java.util.HashMap;

public class RegisterActivity extends AppCompatActivity {
//查看binding
    private ActivityRegisterBinding binding;
   // firebase验证
    private FirebaseAuth firebaseAuth;
    //progress dialog
    private ProgressDialog progressDialog;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityRegisterBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        //init firebase auth
        firebaseAuth = FirebaseAuth.getInstance();

        //设置setup  progress dialog
        progressDialog = new ProgressDialog(this);
        progressDialog.setTitle("稍等");
        progressDialog.setCanceledOnTouchOutside(false);
        //点击之后,返回
        binding.backBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                onBackPressed();
            }
        });
        //处理点击,开始注册
        binding.registerBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
             validateDate();
            }
        });
        //添加fire base以下依赖项
        //firebase认证
        //firebase实时数据库
        //firebase存储

    }
private String name ="",email = "",password="";
    private void validateDate() {
        /*在创建账户之前,先做数据验证*/
        //获取数据
        name = binding.nameEt.getText().toString().trim();
        email = binding.emailEt.getText().toString().trim();
        password = binding.passwordEt.getText().toString().trim();
        String cpassword = binding.cpasswordEt.getText().toString().trim();
        //验证日期
        if(TextUtils.isEmpty(name)){
            Toast.makeText(this,"请输入你的名字",Toast.LENGTH_SHORT).show();
        }
        else if(!Patterns.EMAIL_ADDRESS.matcher(email).matches()){
            Toast.makeText(this, "请输入正确的电子邮件", Toast.LENGTH_SHORT).show();
        }
        else if (TextUtils.isEmpty(password)){
            Toast.makeText(this, "请输入密码", Toast.LENGTH_SHORT).show();
        }
        else if (TextUtils.isEmpty(cpassword)){
            Toast.makeText(this, "确认你的密码", Toast.LENGTH_SHORT).show();
        }
        else if (!password.equals(cpassword)){
            Toast.makeText(this, "密码不匹配", Toast.LENGTH_SHORT).show();
        }
        else {
            creatUserAccount();
        }
    }

    private void creatUserAccount() {
//展示进度
        progressDialog.setMessage("创建账户...");
        progressDialog.show();
        //在firebase中创建用户
        firebaseAuth.createUserWithEmailAndPassword(email,password)
                .addOnSuccessListener(new OnSuccessListener() {
                    @Override
                    public void onSuccess(AuthResult authResult) {
//账户创建成功,现在加入firebase实时数据库
                       updataUserInfo();
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure( Exception e) {
//账户创建失败
                        progressDialog.dismiss();
                        Toast.makeText(RegisterActivity.this, ""+e.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                });
    }

    private void updataUserInfo() {
        progressDialog.setMessage("正在保存用户信息");
        //timestamp
        long timestamp = System.currentTimeMillis();
        //获取当前用户 UID,用户注册成功,可以开始使用
        String uid = firebaseAuth.getUid();
        //要添加到数据库中的设置数据
        HashMap hashMap = new HashMap<>();
        hashMap.put("id",uid);
        hashMap.put("email",email);
        hashMap.put("name",name);
        hashMap.put("profileImage","");//加入失败
        hashMap.put("userType","user");//可能的值为 user,admin:将在 Firebase 实时数据库中手动设为管理员
        hashMap.put("timesTamp",timestamp);
        //将数据设置为数据库
        DatabaseReference ref = FirebaseDatabase.getInstance().getReference("users");
        ref.child(uid)
                .setValue(hashMap)
                .addOnSuccessListener(new OnSuccessListener() {
            @Override
            public void onSuccess(Void unused) {
//添加到数据库
                progressDialog.dismiss();
                Toast.makeText(RegisterActivity.this, "数据创建中", Toast.LENGTH_SHORT).show();
                //由于创建了用户帐户,因此启动用户的dashboard
                startActivity(new Intent(RegisterActivity.this,DashaboardUserActivity.class));
                finish();
            }
        })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure( Exception e) {
//数据添加失败
                        progressDialog.dismiss();
                        Toast.makeText(RegisterActivity.this, ""+e.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                });

    }
}
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 关于该问题,我找了一篇非常好的博客,你可以看看是否有帮助,链接:Firebase 动态链接

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^