在没有监听器的情况下读取 RealtimeDatabase

我不明白为什么要立即从 Firebase RealtimeDatabase 读取数据如此困难。我认为除了使用监听器之外别无他法。在我的代码中,我想从对象用户那里读取提交的“tipo”并在屏幕上打印。但它不加载数据


 private User user;



@Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_login);


    mDatabaseAPI = FirebaseRealTimeDatabaseAPI.getInstance();

    setFields();

    Toast.makeText(this,user.getTipo(),Toast.LENGHT_LONG).show();


}

private void setFields() {

        Authentication auth = new Authentication();

        user = new User();

        user = auth.getCurrentUser();

        reference = mDatabaseAPI.getUserReferenceByUid(user.getUid()).child(user.TIPO);

        reference.addValueEventListener(new ValueEventListener() {


        @Override

        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            user.setTipo( dataSnapshot.getValue(Integer.class));

        }


        @Override

        public void onCancelled(@NonNull DatabaseError databaseError) {


        }

    });


}


慕勒3428872
浏览 92回答 1
1回答

白猪掌柜的

这是因为你在 firebase 完成加载数据之前调用 Toast 来显示你的消息,这是一个异步调用,你必须做这样的事情@Override        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {            user.setTipo( dataSnapshot.getValue(Integer.class));            Toast.makeText(this,user.getTipo(),Toast.LENGHT_LONG).show();        }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java