如何将上下文从片段传递到助手类

时间:2019-01-16 18:07:51

标签: java android firebase android-fragments firebase-authentication

我的“活动”中有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();
                    }
                }
            });
}

你知道我的错在哪里吗?还是我该如何正确运行此代码?

0 个答案:

没有答案