获取user.getUid()时出现错误

时间:2019-05-24 17:40:21

标签: android firebase-authentication

我正在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();

1 个答案:

答案 0 :(得分:0)

auth.getUid()返回null,因为在您调用它时没有用户登录,并且您无法将null传递给child()。您仅应在用户登录时调用它,或至少检查它是否为null以执行其他操作。先前是否检查为null不一定无关紧要-登录状态会随着时间而改变。使用身份验证状态侦听器可以知道登录状态何时更改。