You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase的onComplete回调中调用Toast和跳转Intent失效问题

问题原因

你的报错和onComplete内的Toast没有任何关联,核心错误出在addOnCompleteListener方法的传参上:
你在View.OnClickListener的匿名内部类中调用addOnCompleteListener时,传入的第一个参数this指向的是当前的OnClickListener匿名实例,而Firebase的addOnCompleteListener可接受的首参数类型为LifecycleOwner(比如Activity、Fragment实例)或Executor,并不支持OnClickListener类型,因此直接触发编译错误,整个代码段都无法通过编译,所以看起来像是Toast相关代码无法修改、无法运行。

解决方法

修改addOnCompleteListener的首参数即可,两种方案二选一:

  1. 绑定Fragment生命周期,传入当前LoginFragment的实例:
mAuth.signInWithEmailAndPassword(email, password)
        // 把原来的this替换为LoginFragment.this
        .addOnCompleteListener(LoginFragment.this, new OnCompleteListener<AuthResult>() {
            // 剩余原有代码无需修改
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                // ...原有逻辑
                Toast.makeText(getActivity(), "Authentication failed.", Toast.LENGTH_SHORT).show();
            }
        });
  1. 不需要绑定生命周期的话,直接省略第一个参数,只传OnCompleteListener实例:
mAuth.signInWithEmailAndPassword(email, password)
        .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            // 剩余原有代码无需修改
        });

修改完成后原有Toast代码可以正常运行,无需额外调整。

内容的提问来源于stack exchange,提问作者Kalybor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 13:09:03