2017-10-17 71 views
0

我做的註冊活動使用下面在創建新的Firebase電子郵件密碼用戶帳戶後,Firebase用戶顯示名稱不會顯示在活動上?

CreateAccountActivity

公共類CreateAccountActivity顯示簡單的電子郵件密碼延伸。當用戶進入到創建火力地堡新用戶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(); 

     } 

} 

}

它啓動的信息方法CreateAccount(),然後當任務成功時,它更新用戶配置文件並設置顯示名稱並啓動MainActivit年。但它啓動MainActivty它沒有顯示用戶名。

MainActivity

誰能幫我解決這個問題,當用戶拿到註銷並再次登錄,然後它顯示的名字,否則它沒有經過註冊證明。

任何答案都高度讚賞

回答

0

你需要移動開始MainActivity爲輪廓變化的onComplete()方法中的代碼。目前,您的代碼會啓動Firebase用戶個人資料更改以存儲顯示名稱,但在用戶個人資料更改完成之前它會顯示MainActivity。

您可以更新這一塊你的代碼,看看我在的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(); 

          } 
         }); 

然後,您可以稍後在函數刪除此代碼:

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

您能否請您清楚解釋 –

+0

我更新了我的答案,以包括移動哪個代碼的詳細信息。 –

+0

仍不起作用 –

相關問題