java - 陷入通过 Firebase 获取名称的困境

标签 java android firebase firebase-realtime-database

public
class AccountActivity extends AppCompatActivity {
    private
    TextView showprofile;
    private TextView showemail;
    private
    DatabaseReference userprofilereference;
    private FirebaseAuth mAuth;
    //    private String CurrentUserId;
    private
    FirebaseUser user;
    private Button delete;

    @Override
    protected
    void onCreate ( Bundle savedInstanceState ) {
        super.onCreate (savedInstanceState);
        setContentView (R.layout.activity_account);

        mAuth = FirebaseAuth.getInstance ();
        user = mAuth.getCurrentUser ();
        userprofilereference = FirebaseDatabase.getInstance ().getReference ().child (user.getUid ());
        showemail = (TextView) findViewById (R.id.edit_emailp);
        showemail.setText (user.getEmail ());
        showprofile = (TextView) findViewById (R.id.profile_name_textView);
        delete = (Button) findViewById (R.id.deleteaccount);


        delete.setOnClickListener (new View.OnClickListener () {
            @Override
            public
            void onClick ( View view ) {
                deleteUser ();
                startActivity (new Intent (AccountActivity.this, SignUpActivity.class));

            }
        });
        String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
        DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
        DatabaseReference uidRef = rootRef.child(uid);
        ValueEventListener eventListener = new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                dataSnapshot.child ("name");
                String name = dataSnapshot.getValue (String.class);
                showprofile.setText (name);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {}
        };
        uidRef.addListenerForSingleValueEvent(eventListener);

    }

enter image description here

最佳答案

根据您的数据库结构,不需要 uid。

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("Users");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String name = dataSnapshot.child("name").getValue(String.class);
        showprofile.setText (name);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) { 
        throw databaseError.toException(); // never ignore errors
    }
};
uidRef.addListenerForSingleValueEvent(eventListener);

关于java - 陷入通过 Firebase 获取名称的困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60706392/

相关文章:

java - 如何从项目类的子集生成 JAR 文件?

java - 使用java的带有空格的webdriver类名

java - 使用动态根名称反序列化 JSON

java - 在 roomdb android 中面临 @Relation 的问题

java - Android - Java - 传输/接收十六进制值

firebase - Firestore 离线数据 : Merging writes, 离线持久化的最大时间

java - oracle java教程中可能有错误?

java - 我如何控制android mediaplayer?

javascript - 如何将两个 $firebaseArray 合并为一个?

android - 从 android 应用程序中完全删除 firebase 分析