我正在android中使用Fragment共享数据。在Main Activity中,我检查当前是否为null。在Fragment中,我不检查,因为我已经检查了MainActivity。但是当我尝试启动该应用程序时,它给了我错误。
不能为child()中的参数'pathString'传递null
我在这里检查用户是否为空
@Override
protected void onStart() {
super.onStart();
FirebaseAuth auth = FirebaseAuth.getInstance();
if (auth.getCurrentUser() == null) {
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setAvailableProviders(
Arrays.asList(
new AuthUI.IdpConfig.EmailBuilder().build(),
new AuthUI.IdpConfig.GoogleBuilder().build()
)
)
.build(),
0);
}
}
这是我的片段
DatabaseReference users = base.child("users");
DatabaseReference uid = users.child(auth.getUid());
DatabaseReference incidencies = uid.child("incidencies");
FirebaseListOptions<Incidencia> options = new FirebaseListOptions.Builder<Incidencia>()
.setQuery(incidencies, Incidencia.class)
.setLayout(R.layout.layout_incidencia)
.setLifecycleOwner(getViewLifecycleOwner())
.build();
答案 0 :(得分:0)
auth.getUid()
返回null,因为在您调用它时没有用户登录,并且您无法将null
传递给child()
。您仅应在用户登录时调用它,或至少检查它是否为null以执行其他操作。先前是否检查为null不一定无关紧要-登录状态会随着时间而改变。使用身份验证状态侦听器可以知道登录状态何时更改。