我的“活动”中有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();
}
}
});
}
你知道我的错在哪里吗?还是我该如何正确运行此代码?