2016-10-13 15 views
0

/FirebaseAuth:ユーザー(wmXtRaDooVcABlqA8UCRSLSE0qG2)についてリスナーに通知します。 D/FirebaseAuth:リスナーにユーザーについて通知します(wmXtRaDooVcABlqA8UCRSLSE0qG2)。 D/FirebaseApp:認証状態リスナーに通知します。 D/FirebaseApp:認証済みのリスナーを0個通知します。 D/FirebaseApp:認証状態リスナーに通知します。 D/FirebaseApp:認証済みのリスナーを0個通知します。Firebaseリスナーがサインインしているユーザーをリッスンしていない

これはログからのものです。だからサインインしましたが、うまくいきません。ここでログインのためのコードは次のとおりです。LOGGEDINため

public class LoginActivity extends AppCompatActivity { 

EditText editText; 
EditText editText2; 
Button button; 
public FirebaseAuth Auth = FirebaseAuth.getInstance(); 
public FirebaseAuth.AuthStateListener authlistener; 
String email, pass; 
ProgressBar bar; 

public View.OnClickListener buttonListener = new View.OnClickListener() { 
    public void onClick (View view){ 
     email = editText.getText().toString().trim(); 
     pass = editText2.getText().toString().trim(); 
     logInUser(); 

    }}; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 
    editText = (EditText)findViewById(R.id.editText); 
    editText2 = (EditText)findViewById(R.id.editText2); 
    button = (Button)findViewById(R.id.button2); 
    Auth = FirebaseAuth.getInstance(); 
    button.setOnClickListener(buttonListener); 
    bar = (ProgressBar)findViewById(R.id.progressBar2); 
    bar.setVisibility(View.INVISIBLE); 

    authlistener = new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      FirebaseUser user = firebaseAuth.getCurrentUser(); 
      if (user != null) { 
       // User is signed in 

      } else { 
       // User is signed out 

      } 
      // ... 
     } 
    }; 
    // ... 
} 

@Override 
public void onStart() { 
    super.onStart(); 
    Auth.addAuthStateListener(authlistener); 
} 

@Override 
public void onStop() { 
    super.onStop(); 
    if (authlistener != null) { 
     Auth.removeAuthStateListener(authlistener); 
    } 
} 

public void logInUser(){ 
    bar.setVisibility(View.VISIBLE); 

    Auth.signInWithEmailAndPassword(email, pass) 
      .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
       @Override 
       public void onComplete(@NonNull Task<AuthResult> task) { 

        if(task.isSuccessful()) { 

         Intent loggedInActivity = new Intent(getApplicationContext(), Loggedin.class); 
         startActivity(loggedInActivity); 

        } 
        else{ 

         Toast.makeText(getApplicationContext(), "There was an error, try again", Toast.LENGTH_SHORT).show(); 
         bar.setVisibility(View.INVISIBLE); 
        } 


       } 
      }); 


} 
} 

コード(ログイン後、次の目的、)

public class Loggedin extends AppCompatActivity { 

Button changeMail, changePass; 
String oldPassword; 
String newPassword; 
EditText oldpass, newpass; 
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
public FirebaseAuth Auth = FirebaseAuth.getInstance(); 
public FirebaseAuth.AuthStateListener AuthListener; 

public void updatePassword(){ 
    oldPassword = oldpass.getText().toString(); 
    newPassword = newpass.getText().toString(); 



} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_loggedin); 
    changeMail = (Button)findViewById(R.id.changeMail); 
    changePass = (Button)findViewById(R.id.changePass); 
    oldpass = (EditText)findViewById(R.id.oldPass); 
    newpass = (EditText)findViewById(R.id.newPass); 
    oldpass.setVisibility(View.INVISIBLE); 
    newpass.setVisibility(View.VISIBLE); 

    AuthListener = new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      FirebaseUser user = firebaseAuth.getCurrentUser(); 
      if (user != null) { 
       Log.i("hello", "hi" + user.getUid()); 

      } else { 
       Toast.makeText(getApplicationContext(), "not logged in", Toast.LENGTH_LONG).show(); 

      } 

     } 
    }; 


} 
} 

見ての通り、私はLoggedIn.Javaで設定リスナーを持っていますしかし、それはログインデータを取得していないのですか?なぜそれはこのようなものですか?どうすれば修正できますか?

答えて

0
I believe, you are trying to change\update the existing password with new password.And this is happening only when the user has been logged in. So, here you don't need "AuthStateListener". 

    Just use this function: 
    void ChangePassword(){ 
      EditText newPassword = null; 
      FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 

      user.updatePassword(newPassword.getText().toString().trim()) 
        .addOnCompleteListener(new OnCompleteListener<Void>() { 
         @Override 
         public void onComplete(@NonNull Task<Void> task) { 
          if (task.isSuccessful()) { 
           Toast.makeText(getApplication(), "Password is updated!", Toast.LENGTH_SHORT).show(); 
          } else { 
           Toast.makeText(getApplication(), "Failed to update password!", Toast.LENGTH_SHORT) 
             .show();        
          } 
         } 
        }); 
     } 


If successful proceed or handle the else part as required. 
関連する問題