2017-05-02 2 views
0

Ich hoffe, dass jemand mir helfen kann. Unten ist mein Code für meinen Benutzer create/register. Ich verwende Android Studio und Firebase. Aus irgendeinem Grund erstellt der Code den neuen Benutzer nicht. Ich kann Benutzer manuell zur Datenbank hinzufügen, aber ich kann keine neuen Benutzer erstellen, wenn ich den Emulator starte und die Anmeldung teste. Das Programm bleibt beim Ausführen des progressDialogs hängen. Wenn ich den progressDialog entferne, bekomme ich keine Antwort, so scheint es, dass das Programm beim Aufruf von createUserWithEmailAndPassword() hängen bleibt. Ich habe die Authentifizierung per E-Mail und Passwort in der Firebase-Konsole aktiviert. Ich bin mir nicht sicher, was das Problem ist, und ich würde mich über Einsichten von jemandem freuen, der in der Programmierung besser ausgebildet ist. Vielen Dank im Voraus.Android Firebase erstellen neuen Benutzer nicht funktioniert

public class RegisterPage extends AppCompatActivity implements View.OnClickListener{ 

//declaration of views (variables) 
private Button btn_signup; 
private EditText txt_firstname; 
private EditText txt_lastname; 
private EditText txt_email_signup; 
private EditText txt_username; 
private EditText txt_password_signup; 
private EditText txt_passwordConfirm; 

private ProgressDialog progressDialog; 
private FirebaseAuth mAuth; 
FirebaseAuth.AuthStateListener mAuthStateListener; 


protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_register_page); 

    //initialization of view (assign id's) 
    progressDialog = new ProgressDialog(this); 
    btn_signup = (Button) findViewById(R.id.btn_signup); 
    txt_firstname = (EditText) findViewById(R.id.txt_firstname); 
    txt_lastname = (EditText) findViewById(R.id.txt_lastname); 
    txt_email_signup = (EditText) findViewById(R.id.txt_email_signup); 
    txt_username = (EditText) findViewById(R.id.txt_username); 
    txt_password_signup = (EditText) findViewById(R.id.txt_password_signup); 
    txt_passwordConfirm = (EditText)findViewById(R.id.txt_passwordConfirm); 

    //assign database instances 
    mAuth = FirebaseAuth.getInstance(); 
    mAuthStateListener = new FirebaseAuth.AuthStateListener(){ 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth){ 
      FirebaseUser user = firebaseAuth.getCurrentUser(); 
      if(user != null) { 
      } 
      else{ 
       startActivity(new Intent(RegisterPage.this, UserMainPage.class)); 
      } 
     } 
    }; 


    //set the listener for the click event 
    btn_signup.setOnClickListener(this); 

} 

//function to register user 
private void registerUser(){ 
    //get user input 
    String email = txt_email_signup.getText().toString().trim(); 
    String password = txt_password_signup.getText().toString().trim(); 
    String confirm = txt_passwordConfirm.getText().toString().trim(); 
    String firstname = txt_firstname.getText().toString().trim(); 
    String lastname = txt_lastname.getText().toString().trim(); 
    String username = txt_username.getText().toString().trim(); 

     //check if stings are empty using TextUtils 
     if(TextUtils.isEmpty(firstname)){ //email is empty 
      Toast.makeText(this, "Please enter firstname", Toast.LENGTH_SHORT).show(); 
      //stop further execution 
      return; 

     } 
     if(TextUtils.isEmpty(lastname)){ //email is empty 
      Toast.makeText(this, "Please enter lastname", Toast.LENGTH_SHORT).show(); 
      //stop further execution 
      return; 

     } 
     if(TextUtils.isEmpty(username)){ //email is empty 
      Toast.makeText(this, "Please enter a username", Toast.LENGTH_SHORT).show(); 
      //stop further execution 
      return; 

     } 
     if(TextUtils.isEmpty(email)){ //email is empty 
      Toast.makeText(this, "Please enter email", Toast.LENGTH_SHORT).show(); 
      //stop further execution 
      return; 

     } 
     if(TextUtils.isEmpty(password)){ //password is empty 
      Toast.makeText(this, "Please enter password", Toast.LENGTH_SHORT).show(); 
      //stop further execution 
      return; 
     } 
     if(!password.equals(confirm)){ 
      Toast.makeText(this, "Your passwords do not match", Toast.LENGTH_SHORT).show(); 
      //stop further execution 
      return; 
     } 


      //if validations are okay 
      //we will show a progressDialog as we create user account 
      progressDialog.setMessage("Creating account..."); 
      progressDialog.show(); 



    //register user in firebase database 
    mAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() { 

          @Override 
         public void onComplete(@NonNull Task<AuthResult> task) { 
          progressDialog.dismiss(); 
           if (task.isSuccessful()){ 
           // user registered, start profile activity 
           Toast.makeText(RegisterPage.this,"Account Created",Toast.LENGTH_LONG).show(); 

           finish(); 
           startActivity(new Intent(getApplicationContext(), UserMainPage.class)); 
          } 
          else{ 
           Toast.makeText(RegisterPage.this,"Could not create account. Please try again",Toast.LENGTH_SHORT).show(); 
          } 
         } 
        }); 

} 


@Override 
public void onClick(View view){ 
    if(view == btn_signup){ 
     //if signup button clicked call function register user 
     registerUser(); 
    } 
} 


/* @Override 
    protected void onStart(){ 
    super.onStart(); 
    mAuth.addAuthStateListener(mAuthStateListener); 
    } 

@Override 
protected void onStop(){ 
    super.onStop(); 
    mAuth.removeAuthStateListener(mAuthStateListener); 
}*/ 
} 

Antwort

1

Dies geschieht, weil Sie überhaupt keinen Benutzer erstellen. Also in Ihrer onComplete Methode müssen Sie den aktuellen Benutzer Firebase erhalten. So if (task.isSuccessful() erhalten Sie den Benutzer wie folgt:

Ich hoffe, es hilft.

+0

Vielen Dank. Dies war der Fehler, dass der Code benötigt wurde. Es funktioniert jetzt. –

+0

Freut mich, das zu hören und freue mich, Ihnen zu helfen. Prost! –

+0

Und bitte erwägen Sie eine +1. Vielen Dank! –

Verwandte Themen