Java 为什么可以';这个安卓应用程序不会将Firebase中的文本转换成字符串吗?
我制作了一个简单的安卓应用程序,可以显示Firebase的文本。但是,我在将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
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);
}