在Firebase数据库的警报对话框中显示用户数据

问题描述 投票:0回答:1

enter image description here我试图让用户的信息在单击其个人资料时显示在警报对话框中。我可以单击该对话框,但对话框为空。用户数据存储在Firebase实时数据库中。Iv使用张贴代码Im,并在代码中添加注释。我想问题出在数据库参考还是DataSnapshot?

    //Variables
    usersDb = FirebaseDatabase.getInstance().getReference().child("Users");
    mAuth = FirebaseAuth.getInstance();
    currentUId = mAuth.getCurrentUser().getUid();

    // OnItemClickListener
    flingContainer.setOnItemClickListener(new SwipeFlingAdapterView.OnItemClickListener() {
        @Override
        public void onItemClicked(int itemPosition, Object dataObject) {

               // users profile card 
            cards obj = (cards) dataObject;
            final String userId = obj.getUserId();

            final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

            DatabaseReference userbio = usersDb.child(userId).child("Bio");
            userbio.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    if (dataSnapshot.exists()){
                        if (dataSnapshot.child(userId).child("Bio").getValue() != null){
                        userBio = dataSnapshot.child("Bio").getValue().toString();
                    }
                }
                }

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

                }
            });

            builder.setTitle("Bio");
            builder.setMessage(userBio);
            // Set click listener for alert dialog buttons
            DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    switch(which){
                        case DialogInterface.BUTTON_POSITIVE:
                            // User clicked the Yes button
                            break;

                        case DialogInterface.BUTTON_NEGATIVE:
                            // User clicked the No button
                            break;
                    }
                }
            };
            // Set the alert dialog yes button click listener
            builder.setPositiveButton("Yes", dialogClickListener);
            // Set the alert dialog no button click listener
            builder.setNegativeButton("No",dialogClickListener);
            AlertDialog dialog = builder.create();
            // Display the alert dialog on interface
            dialog.show();
        }
    }); }
android firebase firebase-realtime-database
1个回答
0
投票

也许是因为您两次调用child("Bio"),首先在DatabaseReference中,然后在DataSnapshot中。尝试从其中之一删除它。

© www.soinside.com 2019 - 2024. All rights reserved.