【问题标题】:Can't get the others users name无法获取其他用户名
【发布时间】:2019-07-02 12:04:03
【问题描述】:

我正在尝试为只有一个文本视图的聊天应用程序创建一个活动,它向我显示每个用户的名字,但我得到的是登录用户的名字,而不是其他人的名字。这是我的数据库:

消息活动:

public class MessageActivity extends AppCompatActivity {
    TextView username;
    FirebaseUser fuser;
    DatabaseReference reference;
    Intent intent;

    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super.onCreate ( savedInstanceState );
        setContentView ( R.layout.activity_message );
       TabLayout appBarLayout=findViewById ( R.id.tab_2);



            username=findViewById ( R.id.username1 );

            intent=getIntent ();
            String userid=intent.getStringExtra ( "userid" );
            fuser= FirebaseAuth.getInstance ().getCurrentUser ();
            reference= FirebaseDatabase.getInstance ().getReference ("users").child ( "FIRST NAME");
            reference.addValueEventListener ( new ValueEventListener () {
                @Override
                public void onDataChange (@NonNull DataSnapshot dataSnapshot) {
                    User user=dataSnapshot.getValue (User.class);
                    username.setText ( user.getFirstName () );

                }

                @Override
                public void onCancelled (@NonNull DatabaseError databaseError) {

                }
            } );
        }


    }

消息活动的xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MessageActivity">

    <TextView
        android:id="@+id/username6"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Name" />

    <com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#00FFFFFF">

        <androidx.viewpager.widget.ViewPager
            android:id="@+id/view_pager2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"

            >

        </androidx.viewpager.widget.ViewPager>

    </com.google.android.material.appbar.AppBarLayout>

</LinearLayout>

我希望在 TextView 中出现我想交谈的用户的名字。

【问题讨论】:

  • 不明白,有什么问题?
  • 我很困惑,请编辑您的问题以包括您得到什么问题是什么预期结果我>
  • 恐怕我听不懂你。请编辑您的问题以使其更清楚。也请回复@AlexMamo
  • @Cosmin 在this 问题中,数据库图像包含您试图在此问题中隐藏的密钥,请小心
  • 我编辑了问题。抱歉我的错误。

标签: android firebase-realtime-database


【解决方案1】:

在数据库中你有“FIRSTNAME”,在你的代码中

.child ( "FIRST NAME");

两个值必须相同。把 .child 改成这个

.child ( "FirstName");

【讨论】:

    【解决方案2】:

    您几乎完成了,但忘记添加其他用户 ID 并获取其他用户信息:-

    reference= FirebaseDatabase.getInstance ().getReference ("users").child("other user id").child ( "FIRST NAME");
                reference.addValueEventListener ( new ValueEventListener () {
                    @Override
                    public void onDataChange (@NonNull DataSnapshot dataSnapshot) {
                        User user=dataSnapshot.getValue (User.class);
                        username.setText ( user.getFirstName () );
    
                    }
    
                    @Override
                    public void onCancelled (@NonNull DatabaseError databaseError) {
    
                    }
                } );
    

    【讨论】:

    • 如果您有任何疑问并且如果它解决了您的问题,请发表评论,然后感谢您的回答
    猜你喜欢
    • 1970-01-01
    • 2023-03-09
    • 2016-04-22
    • 2016-10-28
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    相关资源
    最近更新 更多