我有这样的功能:火力地堡onDataChange返回空值
public String checkOnline(String fId) {
DatabaseReference onlineUser = FirebaseDatabase.getInstance().getReference().child("online").child(fId);
onlineUser.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Online post = dataSnapshot.getValue(Online.class);
uOnline = post.timestamp;
different = getDate().getTime() - uOnline;
different = TimeUnit.MILLISECONDS.toMinutes(different);
if(different < 1){
ifOnline = "donline.setVisibility(View.VISIBLE);";
} else {
ifOnline = "donline.setVisibility(View.GONE);";
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});
return ifOnline;
}
ifOnline是一个字符串
我打电话checkOnline的功能和作用为每个用户执行并得到两个语句(1每个用户当然)。
问题是,即使语句执行得很好,checkOnline也会返回null。哪里有问题?是因为onDataChange是无效的吗?
我不知道是哪里的问题作为ifOnline是私有的类,因此一旦它被分配到它应该返回确认当期的价值的价值..
数据结构中增加:
在线数据库结构:
Online -> userId: status (string)
timestamp (long)
请为我们提供您的数据库结构。 –
请使用您的Firebase控制台将您的数据库结构下载为JSON文件。 –
此函数使用1个json树对象,我提供的那个 – AlwaysConfused