java - 如何将上下文从片段传递到辅助类
问题描述
我的 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();
}
}
});
}
你知道我的错在哪里吗?或者我怎样才能不出错地运行这段代码?
解决方案
推荐阅读
- reactjs - Apollo MockedProvider 无法使用带有 onCompleted 的 useLazyQuery 返回数据
- immutability - 重新绑定的规则是什么?
- php - 价格前的高级自定义字段
- c++ - C++ 如何为 ID2D1Device3 调用 CreateDeviceContext
- android - Delphi - ANDROID - 错误无法创建 EGL PBuffer 表面。错误代码:12297
- java - 无法在 BST 中进行前序遍历
- go - GCP 列出实例并按上次开始时间戳过滤
- javascript - 有没有办法确定跨域图像是否会在不绘制画布的情况下污染画布?
- docker - docker启动ejabberd 19.05时如何修复“无法启动未知模块mod_offline_push”
- python - Python - 列表中 * 运算符的用途是什么