我有 2 个使用相同 Activity 的 fragment 。单击按钮时,它们会在它们之间切换。我在 fragment 中使用 Google 的 Firebase 身份验证,但它在 signInWithEmailAndPassword 方法中给了我一个错误,它不接受我的上下文参数。
// 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 进入正确的 Activity ,但 signInWithEmailAndPassword.addOnCompleteListener 不接受上下文,这就是错误所在
最佳答案
使用 getActivity() 更改
addOnCompleteListener
以使用该 fragment 所在的 Activity
// 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
覆盖
关于java - 错误: Context cannot be converted to Executor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42165959/