Firebase onCancelled被调用

时间:2019-02-21 03:20:20

标签: java android firebase firebase-realtime-database

因此,我试图从简单的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方法结束,因此什么也没有发生。

为什么会这样?

0 个答案:

没有答案