Получение ошибки при извлечении данных из firebase

# #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. Теперь я получаю: Не удается разрешить символ «Сообщение»