【问题标题】:Failed to bounce to type in android firebase无法反弹以输入 android firebase
【发布时间】:2018-02-11 22:03:03
【问题描述】:

这是我第一次在这里提问,所以我需要帮助。

我看到了相关的主题,但它并没有解决我的问题。

我在d.setName(ds.getValue(Dog.class).getName()); 行中遇到错误

这是相关代码:

public void getupdates(DataSnapshot dataSnapshot){

    dogies.clear();
    if (dataSnapshot.getChildren() == null) {
        Toast.makeText(c, "No category", Toast.LENGTH_LONG).show();
    }else {
        Toast.makeText(c, "they are  category", Toast.LENGTH_LONG).show();
    }

    for (DataSnapshot ds : dataSnapshot.getChildren()) {
        Dog d = new Dog();
        d.setName(ds.getValue(Dog.class).getName());
        d.setUrl(ds.getValue(Dog.class).getUrl());
        dogies.add(d);
    }
    if(dogies.size()>0)
    {
        customAdapter=new CustomAdapter(c, dogies);
        listView.setAdapter((ListAdapter) customAdapter);
    }else
    {
        Toast.makeText(c, "No data", Toast.LENGTH_SHORT).show();
    }
}

我得到的输出是 they are categoryNo data

这是引用类Dog的来源

public class Dog {

    private  String name;
    private  String url;
    public Dog() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }
}

跟踪 02-11 22:33:04.709 1631-1631/truckstationsa.truckstation E/ActivityThread: 找不到 com.google.android.gms.chimera 的提供商信息 02-11 22:33:04.727 1631-1648/truckstationsa.truckstation E/FirebaseInstanceId:Google Play 服务丢失或没有正确的许可。 02-11 22:33:05.571 1631-1657/truckstationsa.truckstation E/libEGL:load_driver(/system/lib/egl/libGLES_emulation.so):dlopen 失败:库“/system/lib/egl/libGLES_emulation.so”不是成立 02-11 22:33:05.658 1631-1657/truckstationsa.truckstation E/EGL_emulation: tid 1657: eglSurfaceAttrib(1174): 错误 0x3009 (EGL_BAD_MATCH) 02-11 22:33:05.704 1631-1657/truckstationsa.truckstation E/EGL_emulation: tid 1657: eglSurfaceAttrib(1174): 错误 0x3009 (EGL_BAD_MATCH) 02-11 22:33:07.072 1631-1631/truckstationsa.truckstation E/AndroidRuntime: 致命异常: main 进程:truckstationsa.truckstation,PID:1631 com.firebase.client.FirebaseException:无法反弹输入 在 com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:185) 在卡车站sa.truckstation.FirebaseClient.getupdates(FirebaseClient.java:98) 在卡车站sa.truckstation.FirebaseClient$1.onChildAdded(FirebaseClient.java:62) 在 com.firebase.client.core.ChildEventRegistration.fireEvent(ChildEventRegistration.java:61)

完成类 公共类 FirebaseClient {

Context c;
String DB_URL;
ListView listView;
Firebase firebase;
ArrayList<Dog> dogies= new ArrayList<>();
CustomAdapter customAdapter;


public  FirebaseClient(Context c, String DB_URL, ListView listView)
{
    this.c= c;
    this.DB_URL= DB_URL;
    this.listView= listView;


    Firebase.setAndroidContext(c);
    firebase=new Firebase(DB_URL);
}

public  void savedata(String name, String url)
{
    Dog d= new Dog();
    d.setName(name);
    d.setUrl(url);

    firebase.child("dog").push().setValue(d);

    //Toast.makeText(this, "hi", Toast.LENGTH_SHORT).show();

}

   public  void refreshdata()
{
    firebase.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            getupdates(dataSnapshot);
        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {
            getupdates(dataSnapshot);
        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {

        }
    });
}

public void getupdates(DataSnapshot dataSnapshot){

    dogies.clear();
    if (dataSnapshot.getChildren() == null) {
        Toast.makeText(c, "No category", Toast.LENGTH_LONG).show();
    }else {
        Toast.makeText(c, "they are  category", Toast.LENGTH_LONG).show();
    }for (DataSnapshot ds : dataSnapshot.getChildren()) {
            Dog d = new Dog();
            d.setName(ds.getValue(Dog.class).getName());
            d.setUrl(ds.getValue(Dog.class).getUrl());
            dogies.add(ds.getValue(Dog.class));
        }

    if(dogies.size()>0)
    {
        customAdapter=new CustomAdapter(c, dogies);
        listView.setAdapter((ListAdapter) customAdapter);
    }else
    {
        Toast.makeText(c, "No data", Toast.LENGTH_SHORT).show();
    }
}

}

【问题讨论】:

  • 错误是无法弹回输入
  • 要获得帮助,请更新您的问题以包括:1) 完整的错误消息和堆栈跟踪,2) 加载 DataSnapshot 的代码,3) 来自数据库中的位置的 JSON您从(作为文本,没有屏幕截图)阅读。您可以通过单击Firebase Database console 中的“导出 JSON”链接来获取此信息。
  • 您也可以在 forEach 循环中使用 dogies.add(ds.getValue(Dog.class)); 而不是 dogies.add(d);
  • @RosárioPereiraFernandes 感谢,但未修复):

标签: android firebase firebase-realtime-database


【解决方案1】:

你的错误还说:

Google Play services missing or without correct permission.

所以,添加 Google Play 服务或设置正确的权限。

【讨论】:

  • 实际上我不知道如何修复我添加的这些消息(应用插件:'com.google.gms.google-services')对不合适的人进行评分和互联网许可你能帮我吗?
  • 请在很短的时间内获得帮助 0_____0
  • This 如何添加 Google Play 服务。
  • 不用了,非常感谢,我照你说的做,我改用简单的方法,它解决了
  • 您认为我的回答对您有帮助吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-18
  • 2019-03-08
  • 1970-01-01
相关资源
最近更新 更多