因此,我试图从简单的Realtime Database
我的数据库结构如下
project-url thing
{
OnlineUsers: 0
每当手机打开应用程序时,我都试图获得OnlineUsers的价值。
问题是onCancelled
而不是我的onDataChange
被调用,因此它从不检索值。我不确定为什么会调用onCancelled
。
这是我的代码
public class HomePage extends AppCompatActivity {
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference laRef = database.getReference("OnlineUsers");
double onlineUsers;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_page);
final TickerView lotteryTicker = findViewById(R.id.tickerView);
Log.i("HomePage", "!!Before callback");
updatePlayers(new PlayersCallback() {
@Override
public void onCallback(double amount) {
String onlineUsers = Double.toString(amount);
Log.i("HomePage", "!!Got in");
lotteryTicker.setText(onlineUsers);
}
});
Log.i("HomePage", "!!After callback");
}
public interface PlayersCallback {
void onCallback(double amount);
}
public void updatePlayers(final PlayersCallback callBack) {
Log.i("HomePage", "!!Before value listener");
laRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
onlineUsers = (double) dataSnapshot.getValue();
Log.i("HomePage", "!!Inside callback");
callBack.onCallback(onlineUsers);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.i("HomePage", "!!onCancelled");
}
});
}
}
我已经设置了callback
来检索值,并且还放置了一些Log语句,以便可以看到代码的运行位置。该代码最终以onCancelled
方法结束,因此什么也没有发生。
为什么会这样?