2017-02-10 6 views
0

同じアクティビティを使用する2つのフラグメントがあります。ボタンをクリックすると、ボタンが切り替わります。フラグメントの中でGoogleのFirebase認証を使用していますが、signInWithEmailAndPasswordメソッドにエラーが表示されます。エラー:コンテキストをExecutorに変換できません

// Define the context 
private Context mContext; 

public LoginFragment() { 

} 

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 
    this.mContext = context; 
} 

これは、loginメソッド

// logs the user in 
private void loginUser() { 

    // Get the text for email and password 
    String email = loginEmail.getText().toString(); 
    String password = loginPassword.getText().toString(); 

    // Sign the user in 
    mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(mContext, new OnCompleteListener<AuthResult>() { 
     @Override 
     public void onComplete(@NonNull Task<AuthResult> task) { 

      // TODO: Figure out how to give back certain messages 
      // If the task fails 
      if(!task.isSuccessful()){ 
       Log.i(TAG, "Username/Passowrd Combination dont match"); 
      } 
     } 
    }); 

} 

ですこれは、私はそれがすべてで私の問題が解決しない前に、私はAndroid Fragment onAttach() deprecatedを見てきました

Error:(115, 66) error: no suitable method found for addOnCompleteListener(Context,<anonymous OnCompleteListener<AuthResult>>) 
method Task.addOnCompleteListener(Executor,OnCompleteListener<AuthResult>) is not applicable 
(argument mismatch; Context cannot be converted to Executor) 
method Task.addOnCompleteListener(Activity,OnCompleteListener<AuthResult>) is not applicable 
(argument mismatch; Context cannot be converted to Activity) 

を取得エラーです。私はまだエラーが発生します。マイアプリにもそれが適切な活動にmContextを作っているが、signInWithEmailAndPassword.addOnCompleteListenerはコンテキストを受け付けていませんとエラーが

+0

の代わりに渡して文脈使用して、「あなたを渡してみてくださいActivity.this " –

答えて

1

ここでそれは、このフラグメントがであるアクティビティを使用して変更addOnCompleteListenerある

を起動しませんgetActivity()

// Sign the user in 
mAuth.signInWithEmailAndPassword(email, password) 
    .addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() { 
    @Override 
    public void onComplete(@NonNull Task<AuthResult> task) { 

     // TODO: Figure out how to give back certain messages 
     // If the task fails 
     if(!task.isSuccessful()){ 
      Log.i(TAG, "Username/Passowrd Combination dont match"); 
     } 
    } 
}); 
あなたは、すべての mContextのフィールドを削除することができ

onAttachオーバーライド

+0

私はそれを試みたと思った。私はdidntを推測する。ありがとうございました –

関連する問題