Java 为什么可以';这个安卓应用程序不会将Firebase中的文本转换成字符串吗?

Java 为什么可以';这个安卓应用程序不会将Firebase中的文本转换成字符串吗?,java,android,firebase,Java,Android,Firebase,我制作了一个简单的安卓应用程序,可以显示Firebase的文本。但是,我在将Firebase数据转换为字符串时遇到了一个问题。代码如下: public class MainActivity extends AppCompatActivity { private Firebase ref; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceSt

我制作了一个简单的安卓应用程序,可以显示Firebase的文本。但是,我在将Firebase数据转换为字符串时遇到了一个问题。代码如下:

public class MainActivity extends AppCompatActivity {

  private Firebase ref;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Firebase.setAndroidContext(this);
    Firebase ref = new Firebase("xxx");
    final TextView textbox = (TextView) findViewById(R.id.textbox);
    Firebase.setAndroidContext(this);
    ref.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String newCon = (String) dataSnapshot.getValue();
            textbox.setText(newCon);
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {

        }
    });
  }
}
我发现以下错误:

E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.ClassCastException: java.util.HashMap cannot be cast to java.lang.String
at com.example.elish_000.myfirstapp.MainActivity$1.onDataChange(MainActivity.java:43)

运行应用程序时没有错误。但是,当我向Firebase添加文本时,应用程序崩溃,而不是显示文本。

Firebase默认返回一个表示JSON对象的
HashMap
。您可能正在该对象中查找
字符串
属性之一

有两种方法可以解决这个问题

1-使用
HashMap
并提取密钥。 我强烈推荐选项2! 反序列化到类可能需要更多的前期工作。但是,它在类型安全性和代码可读性方面带来了巨大的好处

以下是一些使用Firebase检索数据的文档。

您是否阅读了错误消息?
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
   HashMap<String, Object> data = dataSnapshot.getValue();
   String newCon = data.get("newCon");
   textbox.setText(newCon);
}
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
   MyClass theObject = snapshot.getValue(MyClass.class);
   textbox.setText(theObject.newCon);
}