2017-02-10 1 views
0

У меня есть 2 фрагмента, которые используют одну и ту же активность. При нажатии кнопки они переключаются между ними. Я использую аутентификацию Firebase Google во фрагменте, но он дает мне ошибку в методе signInWithEmailAndPassword. Он не принимает мой аргумент для контекста.Ошибка: контекст не может быть преобразован в Executor

// Define the context 
private Context mContext; 

public LoginFragment() { 

} 

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

Это метод Войти

// 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"); 
      } 
     } 
    }); 

} 

Это ошибка я получаю

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) 

Я посмотрел на Android Fragment onAttach() deprecated, прежде чем он не решает мою проблему вообще. Я все еще получаю ошибку. Мое приложение не будет даже запустить

Это делает 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

Я думал, что попробовал это. Думаю, я этого не сделал. спасибо –