Поэтому я пытаюсь получить очень простое значение из моего простого 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
, поэтому ничего не происходит.
Почему это происходит?