我不明白為什么要立即從 Firebase RealtimeDatabase 讀取數(shù)據(jù)如此困難。我認(rèn)為除了使用監(jiān)聽器之外別無他法。在我的代碼中,我想從對(duì)象用戶那里讀取提交的“tipo”并在屏幕上打印。但它不加載數(shù)據(jù) 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) { } });}
1 回答

白豬掌柜的
TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊
這是因?yàn)槟阍?firebase 完成加載數(shù)據(jù)之前調(diào)用 Toast 來顯示你的消息,這是一個(gè)異步調(diào)用,你必須做這樣的事情
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
user.setTipo( dataSnapshot.getValue(Integer.class));
Toast.makeText(this,user.getTipo(),Toast.LENGHT_LONG).show();
}
添加回答
舉報(bào)
0/150
提交
取消