android - 在 Firebase 中创建实时数据库时卡在创建帐户上,我正在制作一个电子商务应用程序
问题描述
我正在创建一个电子商务应用程序,在创建帐户时卡住了,加载栏中显示“请稍候,我们正在检查凭据”......同时在 Firebase 中创建实时数据库。
我试图创建一个实时数据库
public class register extends AppCompatActivity {
EditText username, pass, phonenumber ;
Button createaccount;
ProgressDialog loadingbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
username = findViewById(R.id.username);
pass = findViewById(R.id.reg_password);
phonenumber = findViewById(R.id.reg_phone_number);
createaccount=findViewById(R.id.create_account);
loadingbar=new ProgressDialog(this);
createaccount.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CreateAccount();
}
});
}
private void CreateAccount() {
String name = username.getText().toString();
String phone = phonenumber.getText().toString();
String password = pass.getText().toString();
if(TextUtils.isEmpty(name))
{
Toast.makeText(register.this, "Please enter name...", Toast.LENGTH_SHORT).show();
}
else if (TextUtils.isEmpty(phone))
{
Toast.makeText(register.this, "Please enter phone...", Toast.LENGTH_SHORT).show();
}
else if (TextUtils.isEmpty(password))
{
Toast.makeText(register.this, "Please enter password...", Toast.LENGTH_SHORT).show();
}
else
{
loadingbar.setTitle("Create Account");
loadingbar.setMessage("Please wait, while we are checking the credentials..");
loadingbar.setCanceledOnTouchOutside(false);
loadingbar.show();
Validatephonenumber(name,phone,password);
}
}
private void Validatephonenumber(final String name, final String phone, final String password) {
final DatabaseReference RootRef ;
RootRef = FirebaseDatabase.getInstance().getReference();
RootRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(!(dataSnapshot.child("Users").child(phone).exists())){
HashMap<String,Object> userdatamap = new HashMap<>();
userdatamap.put("phone",phone);
userdatamap.put("name",name);
userdatamap.put("password",password);
RootRef.child("Users").child(phone).updateChildren(userdatamap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
Toast.makeText(register.this, "Congratulations, Your account has been created..", Toast.LENGTH_SHORT).show();
loadingbar.dismiss();
Intent intent = new Intent(register.this,login.class);
startActivity(intent);
}
else
{
loadingbar.dismiss();
Toast.makeText(register.this, "Network Error, Please try again..", Toast.LENGTH_SHORT).show();
}
}
});
}
else
{
Toast.makeText(register.this, "This "+ phone + "already exists..." , Toast.LENGTH_SHORT).show();
loadingbar.dismiss();
Intent intent = new Intent(register.this,MainActivity.class);
startActivity(intent);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
帐户应该已在 firebase 中创建。
解决方案
package com.example.qaseem.app56;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
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;
import java.util.HashMap;
public class signup extends AppCompatActivity {
public Button b1;
public EditText inputname,password,Phone;
public ProgressDialog loadingbar;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.signup);
b1 = (Button) findViewById(R.id.sbb1);
inputname = (EditText) findViewById(R.id.ed1);
password = (EditText) findViewById(R.id.ed3);
Phone= (EditText) findViewById(R.id.ed2);
loadingbar = new ProgressDialog(this);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
createAccount();
}
});
}
private void createAccount() {
String name = inputname.getText().toString();
String pass =password.getText().toString();
String Phone1 = Phone.getText().toString();
if(TextUtils.isEmpty(name))
{
Toast.makeText(this,"write your nam",Toast.LENGTH_SHORT);
}
else if(TextUtils.isEmpty(pass))
{
Toast.makeText(this,"write your encrypted password",Toast.LENGTH_SHORT);
}
else if(TextUtils.isEmpty(Phone1))
{
Toast.makeText(this,"write your Phone",Toast.LENGTH_SHORT);
}
else
{
loadingbar.setTitle("Create Account");
loadingbar.setMessage("Please Wait, while we are checking the credentials");
loadingbar.setCanceledOnTouchOutside(false);
loadingbar.show();
ValidatephoneNumber(name,pass,Phone1);
}
}
private void ValidatephoneNumber(final String name, final String pass, final String Phone1) {
final DatabaseReference Rootref;
Rootref = FirebaseDatabase.getInstance().getReference();
Rootref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(!(dataSnapshot.child("Users").child(Phone1).exists()))
{
HashMap<String,Object> userdataMap = new HashMap<>();
userdataMap.put("phone",Phone1);
userdataMap.put("password",pass);
userdataMap.put("name",name);
Rootref.child("Users").child(Phone1).updateChildren(userdataMap)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful())
{
Toast.makeText(signup.this, "Congraduation your Account has been created", Toast.LENGTH_SHORT).show();
loadingbar.dismiss();
Intent intent = new Intent(signup.this,login.class);
startActivity(intent);
}
else
{
loadingbar.dismiss();
Toast.makeText(signup.this, "Network Error", Toast.LENGTH_SHORT).show();
}
}
});
}
else
{
Toast.makeText(signup.this, "This" +Phone1 + "Already Exist", Toast.LENGTH_SHORT).show();
loadingbar.dismiss();
Toast.makeText(signup.this, "Try Another phone number", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(signup.this,MainActivity.class);
startActivity(intent);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
推荐阅读
- google-cloud-datastore - 如何在GQL中按时间显示状态小于2的记录
- python - TensorFlow 变量未正确恢复
- c# - Rebus:是否应该将 IdempotencyData 与 IdempotentSagaData 实例一起持久化?
- c# - 一个模型上的设置器取决于另一个模型的值
- mysql - SQL:按时间范围内的百分比变化查询
- android - com.common.api.ApiException: 8: 与 Google Play 服务的连接丢失
- sass - 如何知道一个 html 页面中使用的所有 sass 部分文件
- javascript - 反应原生不等待函数的返回值
- git - Git Filter-Branch All 命令
- apache-flink - Apache Flink,事件时间聚合 - 水印是否与聚合键相关联?