尝试使用addvalueeventlistener从firebase检索数据

h9vpoimq  于 2021-06-29  发布在  Java
关注(0)|答案(0)|浏览(247)
[![I have the read and write set to true in the rules of the database.][1]][1]

我得到一个关于connectiontracker在解除绑定时抛出异常的错误。任何帮助都将不胜感激。我已经尝试过清理构建并通过重新启动使缓存失效。我在ondatasnapshot方法中尝试了许多不同代码的变体,但它们似乎都不起作用。我对gradle做了一些修改,也检查了sdk,但这似乎也不起作用。这段代码的目标是能够从数据库中读入用户名,并将其放入方法oncreateoptionsmenu中调用的菜单项中,以便在菜单中显示用户名。

[1]: https://i.stack.imgur.com/U3zLf.jpg`package com.example.ventit;

import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.media.Image;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.google.firebase.database.ValueEventListener;

public class DashboardActivity extends AppCompatActivity {
    private Button logout;
    private TextView businessCareer;
    private String username;
    private String userID;
    private FirebaseAuth fireBaseAuth;
    FirebaseDatabase rootNode;
    DatabaseReference reference;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // show the action bar in the dashboard activity.
        supportRequestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
        getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#663a82")));
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        // set the image in the action bar.
        getSupportActionBar().setIcon(R.drawable.ic_black_gear);

        setContentView(R.layout.dashboard);

        logout = findViewById(R.id.logout_button);
        businessCareer = findViewById(R.id.business_career);

        fireBaseAuth = FirebaseAuth.getInstance();
        userID = FirebaseAuth.getInstance().getUid();
        rootNode = FirebaseDatabase.getInstance();
        DatabaseReference reference = rootNode.getReference().child("users");

        reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                User uh = new User();
                uh.setUsername(snapshot.child(userID).getValue(User.class).getUsername());
            }

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

            }
        });

        logout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FirebaseAuth.getInstance().signOut();
                Intent intent = new Intent(DashboardActivity.this, MainActivity.class);
                startActivity(intent);
                finish();
            }
        });

        businessCareer.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(DashboardActivity.this, BusinessCareer.class);
                startActivity(intent);
                finish();
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.setting_menu, menu);
        menu.findItem(R.id.username_item).setTitle(username);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        switch(item.getItemId()){
            case R.id.logout_item:
                FirebaseAuth.getInstance().signOut();
                Intent intent = new Intent(DashboardActivity.this, MainActivity.class);
                startActivity(intent);
                finish();
        }
        return super.onOptionsItemSelected(item);
    }

    public String getUserID() { return FirebaseAuth.getInstance().getCurrentUser().getUid(); }
}
`[The values that I am getting are correct but the onDataChange method is getting stuck with errors.[![\]\[1\][2]][2]

  [1]: https://i.stack.imgur.com/cv7xh.jpg
  [2]: https://i.stack.imgur.com/bSmMF.jpg

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题