是什么导致弹跳失败?

What could be causing the failed bounce to type?

我正在使用 Firebase,我正在尝试通过我的 Android 应用显示来自 Firebase 的数据。然而,当我 运行 应用程序时,它崩溃了并且 logcat 显示 "failed to bounce to type"。我在 java class.

中模仿了 JSON 结构的属性

这是 MainActivity:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Firebase.setAndroidContext(this);
    Firebase ref = new Firebase("https://fbandg.firebaseio.com/");
    android.R.layout.simple_list_item_1, android.R.id.text1);
    final TextView textbox = (TextView) findViewById(R.id.textbox);
    Firebase.setAndroidContext(this);
    ValueEventListener newCon = ref.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            fObject obj = dataSnapshot.getValue(fObject.class); //Line 49
            textbox.setText(obj.toString());
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {

        }
    });

这是我创建的 Java class:

public class fObject
{
    String newCond;
    public String getCondition()
    {
        return newCond;
    }
}

产生的错误如下:

firebase.client.DataSnapshot.getValue(DataSnapshot.java:183)
com.example.elish_000.myfirstapp.MainActivity.onDataChange(MainActivity.java:49)

Firebase 的 JSON-to-Java 映射器使用 JavaBean 模式来确定如何映射字段。要使 class 成为有效的 JavaBean,字段名称和 getter/setter 需要匹配。

要使您的 class 正常工作,请将其更改为:

public class fObject
{
    String newCond;
    public String getNewCond()
    {
        return newCond;
    }
}

然后您可以从 DataSnapshot 读取它:

fObject obj = dataSnapshot.getValue(fObject.class);

我前一段时间对此进行了广泛的介绍:。你可能也应该读一读。

试试这个,

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Firebase.setAndroidContext(this);
Firebase ref = new Firebase("https://fbandg.firebaseio.com");
final TextView textbox = (TextView) findViewById(R.id.textbox);
ref.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

        fObject fobject = new fObject();
        fobject.setNewCondition(dataSnapshot.child("condition").getValue().toString());
        textbox.setText(fobject.getNewCondition());
    }

    @Override
    public void onCancelled(FirebaseError firebaseError) {

    }
});

修改你的 fObject class,

public class fObject
{
    String newCond;
    public String getNewCond()
    {
        return newCond;
    }

    public void setNewCond(String cond)
    {
        newCond = cond;
    }
}