Java 错误:无法将上下文转换为执行器
我有两个片段使用相同的活动。单击按钮时,它们会在按钮之间切换。我在片段中使用Google的Firebase身份验证,但它在signInWithEmailAndPassword方法中给了我一个错误,它不接受我的上下文参数Java 错误:无法将上下文转换为执行器,java,android,android-studio,android-fragments,Java,Android,Android Studio,Android Fragments,我有两个片段使用相同的活动。单击按钮时,它们会在按钮之间切换。我在片段中使用Google的Firebase身份验证,但它在signInWithEmailAndPassword方法中给了我一个错误,它不接受我的上下文参数 // Define the context private Context mContext; public LoginFragment() { } @Override public void onAttach(Context context) { super.on
// 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");
}
}
});
}
//让用户登录
私有void登录用户(){
//获取电子邮件和密码的文本
字符串email=loginEmail.getText().toString();
字符串密码=loginPassword.getText().toString();
//让用户登录
mAuth.使用email和password(电子邮件,密码)登录。在完全解决不了我的问题之前添加OnCompleteListener(mContext,新建OnCompleteListener)。我仍然会收到错误。我的应用甚至不会启动
它正在将mContext设置为适当的活动,但使用Email和Password进行登录。addOnCompleteListener不接受上下文,这就是错误所在更改addOnCompleteListener
以使用此片段正在使用的活动getActivity()
//让用户登录
mAuth.使用电子邮件和密码登录(电子邮件,密码)
.addOnCompleteListener(getActivity(),new OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
//TODO:了解如何返回某些消息
//如果任务失败
如果(!task.issusccessful()){
Log.i(标记“Username/Passowrd组合不匹配”);
}
}
});
然后,您可以删除所有mContext
字段和onAttach
覆盖更改addOnCompleteListener
以使用此片段所在的活动getActivity()
//让用户登录
mAuth.使用电子邮件和密码登录(电子邮件,密码)
.addOnCompleteListener(getActivity(),new OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
//TODO:了解如何返回某些消息
//如果任务失败
如果(!task.issusccessful()){
Log.i(标记“Username/Passowrd组合不匹配”);
}
}
});
然后,您可以删除所有mContext
字段和onAttach
override而不是传递上下文,尝试传递“YourActivity”。这个“而不是传递上下文,尝试传递”YourActivity。这个“我想我试过了..我想我没有。谢谢我想我试过..我想我没有。谢谢
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)
// 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");
}
}
});