我试图将在字段中输入的信息保存到数据库中,但是每次单击按钮时,应用程序仅运行进度对话框。它也不会带我进行下一个活动,也不会将我的输入信息保存到数据库中。怎么了?
我的班级代码:
extraData={[...checkins, ...orders, ...waitercalls]}
我的xml代码:
package com.example.profmox.venmart;
import android.app.ProgressDialog;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.design.widget.TextInputEditText;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import android.support.v7.widget.Toolbar;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import java.util.HashMap;
public class RegisterActivity extends AppCompatActivity {
private TextInputEditText mDisName;
private TextInputEditText mEmail;
private TextInputEditText mPassword;
private Button mRegister;
private Toolbar mToolbar;
private FirebaseAuth mAuth;
private ProgressDialog mProgressDialog;
private DatabaseReference mDatabse;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
mAuth = FirebaseAuth.getInstance();
mProgressDialog = new ProgressDialog(this);
mToolbar = (Toolbar)findViewById(R.id.reg_appbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setTitle("Create Account");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mDisName = (TextInputEditText)findViewById(R.id.reg_disName);
mEmail = (TextInputEditText) findViewById(R.id.reg_email);
mPassword = (TextInputEditText)findViewById(R.id.reg_password);
mRegister = (Button)findViewById(R.id.reg_create);
mRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String display_name = mDisName.getText().toString();
String email = mEmail.getText().toString();
String password = mPassword.getText().toString();
if(!TextUtils.isEmpty(display_name) || !TextUtils.isEmpty(email) || !TextUtils.isEmpty(password)){
mProgressDialog.setTitle("Registering user");
mProgressDialog.setMessage("Please wait while we register your account");
mProgressDialog.setCanceledOnTouchOutside(false);
mProgressDialog.show();
registerUser(display_name,email,password);
}
}
});
}
private void registerUser(final String display_name, String email, String password) {
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
FirebaseUser current_user = FirebaseAuth.getInstance().getCurrentUser();
String uid = current_user.getUid();
mDatabse = FirebaseDatabase.getInstance().getReference().child("Customers").child(uid);
HashMap<String, String> userMap = new HashMap<>();
userMap.put("name", display_name);
userMap.put("status"," ");
userMap.put("image", "default");
userMap.put("thumb-iamge","default");
mDatabse.setValue(userMap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
mProgressDialog.dismiss();
Intent main_Intent = new Intent(RegisterActivity.this, MainActivity.class);
main_Intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(main_Intent);
finish();
}
}
});
} else {
mProgressDialog.hide();
// If sign in fails, display a message to the user.
Toast.makeText(RegisterActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
}
});
}
}
及以下是我正在使用的依赖项:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".RegisterActivity">
<include layout="@layout/appbar_layout"
android:id="@+id/reg_appbar"/>
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayout"
android:layout_width="368dp"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="64dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView2">
<android.support.design.widget.TextInputEditText
android:id="@+id/reg_disName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Display Name" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayout2"
android:layout_width="368dp"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="36dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textInputLayout">
<android.support.design.widget.TextInputEditText
android:id="@+id/reg_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Email" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayout3"
android:layout_width="368dp"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="36dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textInputLayout2">
<android.support.design.widget.TextInputEditText
android:id="@+id/reg_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password" />
</android.support.design.widget.TextInputLayout>
<Button
android:id="@+id/reg_create"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginTop="32dp"
android:text="Create Account"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textInputLayout3" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="60dp"
android:text="Create A New Account"
android:textSize="24sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/reg_appbar" />
</android.support.constraint.ConstraintLayout>
答案 0 :(得分:0)
代替这个烤面包:
Toast.makeText(RegisterActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show();
使用此:
Toast.makeText(RegisterActivity.this, task.getException().getMessage(), Toast.LENGTH_LONG).show();
如果您想知道注册失败的原因。
原因可能是:用户已经使用相同的电子邮件,弱密码或...注册了。