如何显示当前登录的用户 Firebase

2023-11-21

    mAuth = FirebaseAuth.getInstance();
    mFirebaseDatabase = FirebaseDatabase.getInstance();
    myRef = mFirebaseDatabase.getReference().child("Users");
    FirebaseUser user = mAuth.getCurrentUser();
    userID = user.getUid();

    mAuthListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            FirebaseUser user = firebaseAuth.getCurrentUser();
            if (user != null) {
                // User is signed in
                Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
            } else {
                // User is signed out
                Log.d(TAG, "onAuthStateChanged:signed_out");
                toastMessage("Successfully signed out.");
            }
            // ...
        }
    };

    myRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            // This method is called once with the initial value and again
            // whenever data at this location is updated.
            showData(dataSnapshot);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

}

/*private void showData(DataSnapshot dataSnapshot) {
    for(DataSnapshot ds : dataSnapshot.getChildren()){
        UserInformation uInfo = new UserInformation();
        uInfo.setName(ds.child(userID).getValue(UserInformation.class).getName()); //set the name
        uInfo.setHandicap(ds.child(userID).getValue(UserInformation.class).getHandicap()); //set the name
        uInfo.setAge(ds.child(userID).getValue(UserInformation.class).getAge()); //set the email
        uInfo.setGender(ds.child(userID).getValue(UserInformation.class).getGender()); //set the phone_num

        //display all the information
        Log.d(TAG, "showData: name: " + uInfo.getName());
        Log.d(TAG, "showData: age: " + uInfo.getAge());
        Log.d(TAG, "showData: handicap: " + uInfo.getHandicap());
        Log.d(TAG, "showData: gender: " + uInfo.getGender());

        ArrayList<String> array  = new ArrayList<>();
        array.add("Full Name:");
        array.add(uInfo.getName());
        array.add("Age:");
        array.add(uInfo.getAge());
        array.add("Handicap:");
        array.add(uInfo.getHandicap());
        array.add("Gender:");
        array.add(uInfo.getGender());
        ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,array);
        mListView.setAdapter(adapter);
    }
}
*/
private void showData(DataSnapshot dataSnapshot) {
    ArrayList<String> array  = new ArrayList<>();
    for(DataSnapshot ds : dataSnapshot.getChildren()){
        UserInformation uInfo = ds.getValue(UserInformation.class);
        array.add(" Full Name /  " +uInfo.getName());
        array.add(" Age /  " + uInfo.getAge());
        array.add(" Handicap/ " + uInfo.getHandicap());
        array.add(" Gender/ " + uInfo.getGender());


    }
    ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,array);
    mListView.setAdapter(adapter);
}

@Override
public void onStart() {
    super.onStart();
    mAuth.addAuthStateListener(mAuthListener);
}

@Override
public void onStop() {
    super.onStop();
    if (mAuthListener != null) {
        mAuth.removeAuthStateListener(mAuthListener);
    }
}
}
}

目前,区分每个用户的方式是通过登录时分配给他们的 UID。登录时,他们使用存储在 Firebase 身份验证部分中的用户名和密码。当用户通过验证后,他们将被定向到他们的帐户页面。然后,在“帐户”页面上,我要求用户输入其个人详细信息,该详细信息保存在“表用户”下的实时数据库中。如何显示当前登录的用户信息?目前它显示用户表的详细信息,但我只希望它显示登录用户的详细信息。输出显示在 ListView 中


首先获取当前登录用户的uid:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String userid = user.getUid();

然后检索当前用户的数据:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users");
ref.child(userid).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) { 
String name = dataSnapshot.child("name").getValue().toString(); 
name1.setText(name);
}

假设你有这个:

Users
  userid
     name: peter
     //etc
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何显示当前登录的用户 Firebase 的相关文章

  • 在旋转时从错误的资源文件夹中提取可绘制对象

    在这里拉我的头发 因此 我正在使用一个具有多种类型的可绘制对象的应用程序 并且它们的结构如下 res Portrait resources drawable mdpi drawable hdpi drawable xhdpi Landsca
  • Android FragmentTransaction 自定义动画(未知动画师名称:Translate)

    我正在尝试让自定义动画与我的片段一起使用 我已按照在线教程进行操作 但出现以下错误 java lang RuntimeException 未知的动画师名称 翻译 动画的 XML 如下
  • 使用 SQLITE 按最近的纬度和经度坐标排序

    我必须获得一个 SQLite SQL 语句 以便在给定初始位置的情况下按最近的纬度和经度坐标进行排序 这是我在 sqlite 数据库中的表的例句 SELECT id name lat lng FROM items EXAMPLE RESUL
  • Android:滚动 Horizo​​ntalScrollView 时如何禁用 ScrollView 的垂直滚动?

    我正在开发一个带有带有 ScrollView 的 Activity 的 Android 应用程序 其中包含 Horizo ntalScrollView 等内容 当我触摸 Horizo ntalScrollView 时 我想禁用外部 Scro
  • 普罗米修斯指标 - 未找到

    我有 Spring Boot 应用程序 并且正在使用 vertx 我想监控服务和 jvm 为此我选择了 Prometheus 这是我的监控配置类 Configuration public class MonitoringConfig Bea
  • 如何在 Java 中测试一个类是否正确实现了 Serialized(不仅仅是 Serialized 的实例)

    我正在实现一个可序列化的类 因此它是一个与 RMI 一起使用的值对象 但我需要测试一下 有没有办法轻松做到这一点 澄清 我正在实现该类 因此在类定义中添加 Serialized 很简单 我需要手动序列化 反序列化它以查看它是否有效 我找到了
  • react-native run-android 失败并出现错误:任务 ':app:dexDebug' 执行失败

    我使用的是 Windows 8 1 和react native cli 1 0 0 and react native 0 31 0 添加后react native maps对于该项目 我运行了命令react native upgrade并给
  • 编辑文件名在 JComboBox 中的显示方式,同时保持对文件的访问

    我对 Java 很陌生 对堆栈溢出也很陌生 我正在尝试利用 JMF API 创建一个用 Java 编码的简单媒体播放器 到目前为止 我已经能够设置一个简单的队列 播放列表来使用JComboBox called playListHolder
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • Javafx过滤表视图

    我正在尝试使用文本字段来过滤表视图 我想要一个文本字段 txtSearch 来搜索 nhs 号码 名字 姓氏 和 分类类别 我尝试过在线实施各种解决方案 但没有运气 我对这一切仍然很陌生 所以如果问得不好 我深表歉意 任何帮助将不胜感激 我
  • Jersey 客户端请求中未设置 Content-Length-Header

    我正在使用 Jersey Client 访问网络服务 如下所示 response r accept MediaType TEXT PLAIN TYPE header content length 0 post String class 其中
  • 如何知道抛出了哪个异常

    我正在对我们的代码库进行审查 有很多这样的陈述 try doSomething catch Exception e 但我想要一种方法来知道 doSomething 抛出了哪个异常 在 doSomething 的实现中没有 throw 语句
  • 在 Spring 中重构这个的最佳方法?

    private final ExecutorService executorParsers Executors newFixedThreadPool 10 public void parse List
  • 按钮 - 单击时更改背景颜色

    我的活动中有 8 个按钮 我正在寻找的是 按钮具有默认背景 单击按钮时 背景颜色应更改为其他颜色 这部分非常简单 但是 当我单击任何其他按钮时 第一个按钮的背景颜色应该变回默认颜色 我知道这将使用 选择器状态 来完成 但我不太确定如何实现它
  • 我可以创建自定义 java.* 包吗?

    我可以创建一个与预定义包同名的自己的包吗在Java中 比如java lang 如果是这样 结果会怎样 这难道不能让我访问该包的受保护的成员 如果不是 是什么阻止我这样做 No java lang被禁止 安全管理器不允许 自定义 类java
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • spring中如何使用jackson代替JdkSerializationRedisSerializer

    我在我的一个 Java 应用程序中使用 Redis 并且正在序列化要存储在 Redis 中的对象列表 但是 我注意到使用 RedisTemplate 会使用 JdkSerializationRedisSerializer 相反 我想使用 J
  • 尝试将 SQLite DB 从数据复制到 SD 卡

    我正在使用以下代码 该代码发布在 Stack Overflow 上的某个位置 并根据我的目的进行了修改 try File sd Environment getExternalStorageDirectory File data Enviro
  • Android 中带有组的列表视图

    我有一个列表视图 每行都有一些日期和文本 我可以像 iPhone 中那样将这个 listView 分组 组之间有标题吗 在 android 中是否可能 请帮忙 即 我需要在 Listview 行之间有标题栏 以便如果我使用日期对其进行分组
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import

随机推荐

  • aws sns 确认订阅请求处理问题

    我正在尝试为 s3 中的存储桶实现 aws sns 服务 并且我正在关注此文档https docs aws amazon com sns latest dg SendMessageToHttp html据此 确认订阅的请求中将有订阅 url
  • Java中的单继承作弊?

    我听说有一种方法可以欺骗单继承并在Java中实现多重继承 有谁知道如何实现这个 不使用接口 只是出于好奇 当然可以 但这很棘手 您应该认真考虑这是否是您想要的方式 这个想法是使用基于范围的继承和基于类型的继承 这是类型对话 表示出于内部目的
  • jquery ui sortables 连接列表:复制项目

    我有两个列表 我希望它们都可以排序 并且希望能够将项目从 list1 复制 拖动 到 list2 反之亦然 http jqueryui com demos sortable connect lists 是我想要的 但项目被移动 而不是复制
  • 圆-矩形碰撞检测(交叉点)

    如何判断圆形和矩形在二维欧几里得空间中是否相交 即经典的二维几何 我将这样做 bool intersects CircleType circle RectType rect circleDistance x abs circle x rec
  • 如何使用 PHP 将文件从服务器复制到 Dropbox? [复制]

    这个问题在这里已经有答案了 我想我可能找到了一个 PHP 程序 可以将特定文件夹中的文件上传到我的 Dropbox 帐户 完整的解决方案可以找到here 该代码似乎有效 因为正在上传类似的文件和文件夹 但是 我不希望预先压缩服务器上的文件
  • 仅使用 javascript 列出目录中的文件

    是否可以仅使用 javascript 列出目录中的文件 为了澄清 我的意思是列出服务器上的文件 而不是客户端计算机上的文件 例如 www domain com files 包含 4 张图片 jpg 我可以创建一个额外的页面 www doma
  • 在 RMarkdown 中缩进而不添加项目符号点或数字

    我想制作一个缩进列表 但我不希望它有要点或数字 我在 RStudio 中使用 Rmarkdown 并编织为 html bla bla bla Example indented line with bullet point Another i
  • 使用来自多个点的多个图像构建 3D 模型 (kinect)

    如果从不同角度收集各种图像和深度数据 是否可以构建静止物体的 3D 模型 我的想法是有一种圆形传送带 其中将放置 kinect 并且传送带同时要在 3D 空间中重建的真实物体位于中间 此后传送带围绕图像旋转一圈 并捕获大量图像 可能每秒 1
  • python numpy 机器 epsilon

    我想了解什么是机器 epsilon 根据维基百科 可以计算如下 def machineEpsilon func float machine epsilon func 1 while func 1 func machine epsilon f
  • Java 6 源代码向后兼容性和 SQL

    我的理解是 为了保持源兼容性 Java 永远不会向公共接口引入新方法 因为这会破坏实现接口的现有客户端 Java 发行说明 states 一般来说 政策如下 除了任何不兼容的情况 进一步列出如下 维护版本 例如 1 4 1 1 4 2 不引
  • jQuery .attr("disabled", "disabled") 在 Chrome 中不起作用

    不知道为什么这不起作用 当人们单击我的应用程序的 编辑 按钮时 禁用的文本字段将变为可编辑 bewerken click function e input disabled disabled removeAttr disabled 然后 我
  • 如何修复错误; “错误:Bootstrap 工具提示需要 Tether (http://github.hubspot.com/tether/)”

    我正在使用 Bootstrap V4 控制台中记录了以下错误 错误 Bootstrap 工具提示需要 Tether http github hubspot com tether 我尝试通过安装 Tether 来消除该错误 但没有成功 我通过
  • 进度条与 asyncTask 一起使用

    我想在屏幕上使用进度条而不是进度对话框 我在 XML 视图文件上插入了一个进度条 我想让它在加载时显示 在不加载时禁用它 所以我使用的是可见的 但它发生了 所以其余的数据下降了 我应该如何在异步任务中使用进度条 我怎样才能显示和隐藏它 这是
  • Android 实时开发者通知一次性购买成功了一半

    当我使用 慢速测试卡 几分钟后批准 时 Android 的实时开发人员通知会起作用 我通过 pub sub 在我的服务器上收到两个通知 一种是当购买已完成并且其中包含令牌和订单时的消费状态 0 时 第二个通知 在它被消费后 带有 token
  • 导入错误:没有名为 lxml.etree 的模块

    我正在尝试在我的项目中导入预邮件程序 但它在 etree 导入中始终失败 我安装了 lxml 的 2 7 二进制文件 lxml 模块导入正常 如果我记录 lxml 模块 它会显示库文件夹的正确路径 但我无法从中导入 etree lxml 文
  • Java从文本文件中读取值

    我是 Java 新手 我有一个包含以下内容的文本文件 trace structure list a structure c 0 748701 0 243802 0 227221 0 752231 0 261118 0 263976 1 19
  • 在 Python 中处理多个文件时如何避免嵌套“with”语句

    当使用推荐的样式在 Python 中处理多个文件时 代码可能会变得丑陋 with open foo txt as foo with open bar txt w as bar with open baz txt w as baz Read
  • PHP 包含文件扩展名吗?

    对于 PHP 中必需 包含的文件 使用更好吗 inc扩展 vs inc php vs php扩展 有时人们使用 inc扩展 然后进行一些服务器配置以保留 inc通过网络浏览器访问文件 这might如果由知识渊博的系统管理员绝对正确地完成 那
  • 修剪所有数据库字段

    您知道 sql server 中是否有一种快速方法 通过 transact sql 可以修剪所有数据库字符串字段 没有光标 复制并粘贴输出 也适用于没有 varchar max 的 SQL 2000 如果需要 可以轻松扩展以将 GO 行添加
  • 如何显示当前登录的用户 Firebase

    mAuth FirebaseAuth getInstance mFirebaseDatabase FirebaseDatabase getInstance myRef mFirebaseDatabase getReference child