【问题标题】:Getting error in when obtaining user.getUid()获取 user.getUid() 时出错
【发布时间】:2019-05-24 17:40:21
【问题描述】:

我在 android 中使用 Fragment 来共享数据。在主 Activity 中,我检查当前是否为空。在片段中我不检查,因为我已经检查了我的 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();

【问题讨论】:

    标签: android firebase-authentication


    【解决方案1】:

    auth.getUid() 返回 null,因为在您调用它时没有用户登录,并且您无法将 null 传递给 child()。您应该只在用户登录时调用它,或者至少检查它是否为 null 以执行不同的操作。您之前是否检查过 null 并不一定重要 - 登录状态会随着时间而改变。使用身份验证状态侦听器了解登录状态何时发生变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多