当前位置: 首页 > 知识库问答 >
问题:

在我的应用程序中,我正在尝试使用userID从数据库中获取特定的用户信息,我正在获得空字段,我成功地将其存储在那里

齐财
2023-03-14

在我的应用程序中没有错误显示问题所在这是我检索数据的代码:

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fargment_profile, container, false);
    name = (TextView) view.findViewById(R.id.name);
    mail = (TextView) view.findViewById(R.id.mail);
    phone = (TextView) view.findViewById(R.id.phone);
    user = FirebaseAuth.getInstance().getCurrentUser();
    userID = user.getUid();
    //show all data
    ShowUser();
    return view;
}

private void ShowUser() {


    databaseReference = FirebaseDatabase.getInstance().getReference();

    databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            if (snapshot.exists()) {
                String username = snapshot.child(userID).child("name").getValue(String.class);
                String usermail = snapshot.child(userID).child("email").getValue(String.class);
                String userphone = snapshot.child(userID).child("phone").getValue(String.class);

                mail.setText(usermail);
                name.setText(username);
                phone.setText(userphone);

            } else {
                Toast.makeText(getContext(), "error", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {
            Toast.makeText(getContext(), "" + error, Toast.LENGTH_SHORT).show();
        }
    });
}

这是我的Firebase图像:

共有1个答案

林博厚
2023-03-14

我想你对你的推荐人有意见。代码应为

FirebaseDatabase.getInstance().getReference().child("users")

您没有通过此代码引用用户节点databaseReference=firebaseDatabase.getInstance().getReference();

最好还将用户id添加到databaseReference的顶部,这样就可以避免您反复提及snapshot.child(userID)

用于参考的代码till userId为:

FirebaseDatabase.getInstance().getReference().child("users").child(userID);

最终代码:

private void ShowUser() {
    databaseReference = FirebaseDatabase.getInstance().getReference("users").child(userID);

    databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            if (snapshot.exists()) {
                String username = snapshot.child("name").getValue(String.class);
                String usermail = snapshot.child("email").getValue(String.class);
                String userphone = snapshot.child("phone").getValue(String.class);

                mail.setText(usermail);
                name.setText(username);
                phone.setText(userphone);

            } else {
                Toast.makeText(getContext(), "error", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {
            Toast.makeText(getContext(), "" + error, Toast.LENGTH_SHORT).show();
        }
    });
}
 类似资料:
  • 我正在尝试构建与URL匹配的正则表达式 下面是2个示例URL Category/Sorganiser/Bouger/Escalade/offre/78934/Category/Sorganiser/Savourer/offre/8040/ 我想要在offre后面的号码(78934和8040)以及offre前面的单词(凯雷德和savourer) 我做了几次测试但没有通过 https://regex1

  • 我正在尝试将本地Spring Boot应用程序连接到我的Heroku Postgres数据库。当我使用Heroku上可用的creds尝试此操作时,我得到以下错误 错误:SEVERITY_LOCALIZED=FATAL,SEVERITY_NON_LOCALIZED=FATAL, CODE=28000, MESSAGE=没有主机"myhost",用户"myuser",数据库"mydb"的pg_hba.

  • 错误:任务“:app:ProcessDebugResources”执行失败。 com.android.ide.common.Process.processException:org.gradle.Process.internal.exeception:Process“command”c:\users\mohamed sallam\appdata\local\android\sdk\build-to

  • 问题内容: 我正在尝试遵循Zed Shaw的《困难方法学习Python》指南。我需要在Powershell中使用python。我在中安装了Python 2.7.3 。每当我在Powershell中键入python时,都会出现一个错误,指出“ python”一词无法识别为cmdlet,函数,脚本文件或可操作程序的名称。我也输入了以下内容: 提供了建议的解决方案,但是在Powershell中输入pyt

  • 我一直试图实现启动屏幕到我的应用程序的帮助下,许多代码可以在网站上使用,但没有一个为我工作。每次应用程序崩溃后显示启动屏幕3秒。我不知道哪里出错了,请更正我的代码,以正确显示闪屏!谢谢! //这是我的主要活动

  • 我正在尝试在Android应用程序的片段中初始化admob广告,这是正确的方法吗 < code > @ Override public void onview created(@ NonNull View View,@ Nullable Bundle savedInstanceState){ super . onview created(View,savedInstanceState);mobil