首页 > 解决方案 > 如何将上下文从片段传递到辅助类

问题描述

我的 Activity 中有 3 个片段,我正在实现它们的接口,如下所示:

public class MainActivity extends AppCompatActivity implements FirstFragment.OnFragmentInteractionListener,
    RegisterPageFragment.OnFragmentInteractionListener,
    LoginPageFragment.OnFragmentInteractionListener {

当我尝试从 RegisterPageFragment 片段创建用户时,使用以下代码:

firebaseHelper.createNewUser(getActivity(), email, password, new Callback() {
            @Override
            public void callback() {
                accountCreated();
            }
        });
  //This code is running in a fragment
  //      (RegisterPageFragment)

我收到 java.lang.NullPointerException。因为getActivity()回报null. 但关键是,我在此代码块之前有一个 ToastMessage:

ShortCut.displayMessageToast(getActivity(), "You should fill empty fields!");

为什么我不会从 ToastMessage 和 firebaseHelper 中得到错误?因为他们有相同的上下文..

这种情况让我认为问题出在 mAuth.createUserWithEmailAndPassword() 中。这是我的 firebaseHelper.createNewUser() 方法:

     public void createNewUser(final Context context, String email, String password , final Callback callback){
    firebaseAuth = this.getFirebaseAuth();
    firebaseAuth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener((Activity) context, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (!task.isSuccessful()) {
                        ShortCut.displayMessageToast(context,  "invalid info");
                    }else {
                        ShortCut.displayMessageToast(context, "Account created");
                        callback.callback();
                    }
                }
            });
}

你知道我的错在哪里吗?或者我怎样才能不出错地运行这段代码?

标签: javaandroidfirebaseandroid-fragmentsfirebase-authentication

解决方案


推荐阅读