2017-10-17 7 views
0

Je fais un signe en activité pour créer un nouvel utilisateur sur Firebase en utilisant mot de passe simple e-mail ci-dessousLe nom d'affichage de l'utilisateur Firebase ne s'affichera pas sur l'activité après la création du nouveau compte d'utilisateur du mot de passe de messagerie Firebase.

CreateAccountActivity

CreateAccountActivity public class AppCompatActivity {

private ProgressDialog mprogress; 
private RelativeLayout signUpactivity; 

FirebaseUser user; 

private Button msignUp; 
public EditText mName,mEmail,mPassword,mCon_Password,mschl_name; 

Spinner gender; 


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

    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 

    mAuth = FirebaseAuth.getInstance(); 
    mprogress = new ProgressDialog(this); 

    msignUp = (Button) findViewById(R.id.signUp); 

    signUpactivity = (RelativeLayout) findViewById(R.id.activity_signUp); 

    mName = (EditText) findViewById(R.id.namefield); 
    mEmail = (EditText) findViewById(R.id.emailField); 
    mPassword = (EditText) findViewById(R.id.passwordField); 
    mschl_name = (EditText) findViewById(R.id.sname); 

    String[] option = new String[]{ 
      "Male", "Female" 
    }; 

    gender = (Spinner) findViewById(R.id.gender); 
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, option); 
    arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    gender.setAdapter(arrayAdapter); 

    msignUp.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(isNetworkAvailable()){ 

       mprogress.setMessage("Creating Account..."); 
       mprogress.show(); 
       mprogress.setCanceledOnTouchOutside(false); 
       mprogress.setCancelable(false); 
       createAccount(); 

      }else{ 

       Snackbar.make(signUpactivity, "Network UnAvailable", Snackbar.LENGTH_SHORT).show(); 

      } 
     } 
    }); 

} 

private boolean isNetworkAvailable() { 

    ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo networkInfo = manager.getActiveNetworkInfo(); 

    return networkInfo != null && networkInfo.isConnected(); 

} 

View focusview = null; 
boolean cancel = false; 

private void createAccount(){ 

    final String name = mName.getText().toString(); 
    String email = mEmail.getText().toString(); 

    String password = mPassword.getText().toString(); 
    final String gendertxt = gender.getSelectedItem().toString(); 
    final String schl_name = mschl_name.getText().toString(); 

    String edu_email = email+"@edutree.com"; 

     if (isNetworkAvailable()){ 

      mAuth.createUserWithEmailAndPassword(edu_email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() { 
       @Override 
       public void onComplete(Task<AuthResult> task) { 

        if(task.isSuccessful()){ 

         user = FirebaseAuth.getInstance().getCurrentUser(); 

         String user_email = user.getEmail(); 
         String gendertxt = gender.getSelectedItem().toString(); 

         UserProfileChangeRequest profileChangeRequest = new UserProfileChangeRequest.Builder().setDisplayName(name).build(); 

         user.updateProfile(profileChangeRequest).addOnCompleteListener(new OnCompleteListener<Void>() { 
          @Override 
          public void onComplete(Task<Void> task) { 

           if(task.isSuccessful()){ 

            Log.d("Profile", "User Profile Updated successfully"); 
            FirebaseCrash.log("Profile Updated"); 

           }else { 

            Log.d("Error","error while updating profile"); 
            FirebaseCrash.log("Error while updating profile"); 

           } 

          } 
         }); 


         mprogress.dismiss(); 

         new Handler().postDelayed(new Runnable() { 
          @Override 
          public void run() { 
           Intent intent = new Intent(CreateAccountActivity.this, MainActivity.class); 
           intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
           startActivity(intent); 
           overridePendingTransition(R.anim.fade_in, R.anim.fade_out); 

           Toast.makeText(CreateAccountActivity.this, "Welcome "+ FirebaseAuth.getInstance().getCurrentUser().getEmail(), Toast.LENGTH_LONG).show(); 
          } 
         },500); 


        }else{ 

         Snackbar.make(signUpactivity, "Error occurred" , Snackbar.LENGTH_SHORT).show(); 
         mprogress.dismiss(); 

        } 

       } 
      }); 

     }else { 

      Snackbar.make(signUpactivity, "Network UnAvailable", Snackbar.LENGTH_SHORT).show(); 
      mprogress.dismiss(); 

     } 

} 

}

Lorsque l'utilisateur entre les informations qu'il lance la méthode CreateAccount() puis, lorsque la tâche est réussie, il met à jour le profil de l'utilisateur et définit le nom d'affichage et démarre la MainActivit y. mais il démarre le MainActivty son ne montrant pas le nom d'utilisateur.

MainActivity

Quelqu'un peut-il me aider à résoudre ce problème, et lorsque l'utilisateur se déconnecter et se reconnecter alors il indique le nom sinon il ne montre pas après inscrire.

Toutes les réponses ont été très appréciés

Répondre

0

Vous devez déplacer le code qui commence à MainActivity dans la méthode onComplete() pour le changement de profil. À l'heure actuelle, votre code démarre le changement de profil utilisateur Firebase pour stocker le nom d'affichage, mais MainActivity s'affiche avant que la modification du profil utilisateur soit terminée.

Vous pouvez mettre à jour ce morceau de votre code, regardez ce que j'ai ajouté à la fin de la méthode onComplete():

user.updateProfile(profileChangeRequest).addOnCompleteListener(new OnCompleteListener<Void>() { 
          @Override 
          public void onComplete(Task<Void> task) { 

           if(task.isSuccessful()){ 

            Log.d("Profile", "User Profile Updated successfully"); 
            FirebaseCrash.log("Profile Updated"); 

           }else { 

            Log.d("Error","error while updating profile"); 
            FirebaseCrash.log("Error while updating profile"); 

           } 

           mprogress.dismiss(); 
           Intent intent = new Intent(CreateAccountActivity.this, MainActivity.class); 
           intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
           startActivity(intent); 
           overridePendingTransition(R.anim.fade_in, R.anim.fade_out); 
           Toast.makeText(CreateAccountActivity.this, "Welcome "+ FirebaseAuth.getInstance().getCurrentUser().getEmail(), Toast.LENGTH_LONG).show(); 

          } 
         }); 

Ensuite, vous pouvez supprimer ce code plus tard dans la fonction:

mprogress.dismiss(); 

         new Handler().postDelayed(new Runnable() { 
          @Override 
          public void run() { 
           Intent intent = new Intent(CreateAccountActivity.this, MainActivity.class); 
           intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
           startActivity(intent); 
           overridePendingTransition(R.anim.fade_in, R.anim.fade_out); 

           Toast.makeText(CreateAccountActivity.this, "Welcome "+ FirebaseAuth.getInstance().getCurrentUser().getEmail(), Toast.LENGTH_LONG).show(); 
          } 
         },500); 
+0

Pouvez-vous s'il vous plaît expliquer clairement –

+0

J'ai mis à jour ma réponse pour inclure les détails de l'endroit où déplacer quel code. –

+0

Encore ça ne marche pas –