Не удается преобразовать объект типа java.lang.Boolean

#java #android #firebase #firebase-realtime-database

#java #Android #firebase #firebase-база данных в реальном времени

Вопрос:

Я рассмотрел множество тем в этом разделе, но я не могу адаптировать код в своем собственном коде. Потому что, очевидно, есть ошибка, которую я не вижу. И я получаю сообщение об ошибке.

EpisodeModel.class

открытый класс EpisodeModel {

 private String episode;

public EpisodeModel(String episode) {
    this.episode = episode;
}

public EpisodeModel()
{

}

public String getEpisode() {
    return episode;
}

public void setEpisode(String episode) {
    this.episode = episode;
}

@Override
public String toString() {
    return "EpisodeModel{"  
            "episode='"   episode   '''  
            '}';
}
  

}

MyFragment.class

 public void check() {
        ref.child("Users").child(user.getUid()).child("Watched").child(seriesTitle).child("Season").child(seasonGet)
                .addChildEventListener(new ChildEventListener() {
                    @Override
                    public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

                        EpisodeModel episodeModel = dataSnapshot.getValue(EpisodeModel.class);
                        Log.i("child",episodeModel.toString());

                        Log.i("test","test2");
                        String st = dataSnapshot.getKey();
                        int no = Integer.parseInt(st);

                        if(!deneme.contains(no))
                        {
                            deneme.add(no);
                        }

                        checkModelTestAdapter.notifyDataSetChanged();
                    }


...onChildChanged..onChildRemoved..onChildMoved..onCancelled..}};
  

Logcat

 Process: com.example.forev.seriesboiler, PID: 6959
    com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.Boolean to type com.example.forev.seriesboiler.Models.EpisodeModel
        at com.google.android.gms.internal.firebase_database.zzkt.zzb(Unknown Source)
        at com.google.android.gms.internal.firebase_database.zzkt.zza(Unknown Source)
        at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
        at com.example.forev.seriesboiler.Fragments.SeriesDetailsFragment$1.onChildAdded(SeriesDetailsFragment.java:88)
        at com.google.android.gms.internal.firebase_database.zzbt.zza(Unknown Source)
        at com.google.android.gms.internal.firebase_database.zzgx.zzdr(Unknown Source)
        at com.google.android.gms.internal.firebase_database.zzhd.run(Unknown Source)
        at android.os.Handler.handleCallback(Handler.java:751)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:154)
  

Комментарии:

1. DataSnapshot содержит логическое значение, поэтому DataSnapshot.GetValue(EpisodeModel.class ) вызывает исключение приведения. Вам нужно выяснить, почему он возвращает логическое значение, а не как ваш объект EpisodeModel.

2. Пожалуйста, добавьте свою структуру базы данных и, пожалуйста, также ответьте с помощью @AlexMamo

Ответ №1:

EpisodeModel episodeModel = DataSnapshot.GetValue(EpisodeModel.class );

В этой строке вы получаете сообщение об ошибке, в котором говорится, что объект Boolean не может быть преобразован в EpisodeModel. Это может появиться, если вы установили значение этого дочернего элемента в true или false (без двойных кавычек). Просмотрите это еще раз и попробуйте добавить двойные кавычки вокруг «true» или «false», которые вы хотите установить в дочернее значение.