# #android #firebase #firebase-realtime-database
Вопрос:
Я использую Firebase для разработки на Android.
Я пытаюсь извлечь данные из базы данных Firebase в режиме реального времени.
Это мой код:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ValueEventListener postListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Get Post object and use the values to update the UI
Post post = dataSnapshot.getValue(Post.class);
// ..
}
};
database_ref.addValueEventListener(postListener);
}
}
Я получаю эту ошибку:
Класс «Анонимный класс, производный от ValueEventListener», должен быть либо объявлен абстрактным, либо реализовать абстрактный метод «После отмены(ошибка базы данных)» в «ValueEventListener».
Ответ №1:
Ошибка, по-видимому, довольно ясна. Ваша среда IDE, должно быть, выдает вам ошибку, которую вы только переопределили OnDataChanged()
, но не onCancelled()
исправили .
Примером получения изменений в реальном времени в базе данных в реальном времени является:
ValueEventListener postListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Get Post object and use the values to update the UI
Post post = dataSnapshot.getValue(Post.class);
// ..
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
}}; mPostReference.addValueEventListener(postListener);
Фрагмент кода из официальных документов здесь — Чтение и запись данных
Комментарии:
1. Теперь я получаю: Не удается разрешить символ «Сообщение»
2.
Post
является просто объектом java POJO и просто используется в качестве примера. Я рекомендую вам ознакомиться со следующим официальным руководством по началу работы на Android: Начало работы
Ответ №2:
Вы переопределили только метод onDataChange () -, вы также должны переопределить метод onCancelled () -.
Ответ №3:
ValueEventListener имеет 2 метода, 1-й-onDataChange(), 2-й-onCancelled. добавьте это в свой список значений:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ValueEventListener postListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Get Post object and use the values to update the UI
Post post = dataSnapshot.getValue(Post.class);
// ..
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
//onCancelled
}
};
database_ref.addValueEventListener(postListener);
}
}
Комментарии:
1. Теперь я получаю: Не удается разрешить символ «Сообщение»