タイトルについての私の質問。ここに私のログインコード。このように使用すると、 "addOnCompleteListenerメソッドを解決できません...."というメッセージが表示されます。 Androidのスタジオは、Executorにキャストするが、キャストしたときにException "FragmentはExecutorにキャストできない"ので、Executorをキャストすることはできません。どうすればこの問題を解決できますか?フラグメントでFirebase Emailのログインを使用するには?
public class LoginFragment extends Fragment implements View.OnClickListener {
View v;
Button btnLogin;
TextView btnLostPw,btnRegister;
EditText txMail,txPass;
private FirebaseAuth mAuth;
private FirebaseUser mUser;
public LoginFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this
v = inflater.inflate(R.layout.fragment_login, container, false);
btnLogin = (Button) v.findViewById(R.id.login_btn_login);
btnLostPw =(TextView) v.findViewById(R.id.login_btn_lost_pw);
btnRegister=(TextView) v.findViewById(R.id.login_btn_register);
txMail=(EditText)v.findViewById(R.id.login_email);
txPass=(EditText)v.findViewById(R.id.login_pass);
btnRegister.setOnClickListener(this);
btnLostPw.setOnClickListener(this);
btnLogin.setOnClickListener(this);
mAuth = FirebaseAuth.getInstance();
mUser = FirebaseAuth.getInstance().getCurrentUser();
return v;
}
@Override
public void onClick(View v) {
if(v.getId() == R.id.login_btn_lost_pw)
{
//Password Recovery
}
else if(v.getId() == R.id.login_btn_register)
{
//Register
}
else if(v.getId() == R.id.login_btn_login)
{
LoginUser(txMail.getText().toString(),txPass.getText().toString());
}
}
private void LoginUser(String mail, final String password) {
try {
mAuth.signInWithEmailAndPassword(mail, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful())
{
FragmentTransaction ft = getFragmentManager().beginTransaction();
Fragment mFrag = new NextFragment();
ft.replace(R.id.fragment_container, mFrag);
ft.commit();
}
else {
Snackbar.make(getActivity().findViewById(android.R.id.content),
task.getException().getLocalizedMessage(), Snackbar.LENGTH_LONG).show();
}
}
});
}
catch (Exception ex)
{
Snackbar.make(getActivity().findViewById(android.R.id.content),
ex.getLocalizedMessage().toString(), Snackbar.LENGTH_LONG).show();
}
}
}
編集:クラス内のすべてのコードを追加しました。
ありがとうございました。 ここで働いコード:
mAuth.signInWithEmailAndPassword(mail, password).addOnCompleteListener((Activity) getContext(), new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful())
{
FragmentTransaction ft = getFragmentManager().beginTransaction();
Fragment mFrag = new NextFragment();
ft.replace(R.id.fragment_container, mFrag);
ft.commit();
}
else {
Snackbar.make(getActivity().findViewById(android.R.id.content),
task.getException().getLocalizedMessage(), Snackbar.LENGTH_LONG).show();
}
}
});
は、あなたの完全なクラスコードを投稿します! –
が追加されました。警告ありがとう。 –
私の答えを見つける。 –