我正在开发一个带有Firebase后端的Android应用程序。 Firebase对我来说很新,所以我有几个问题。
这是具有2个EditText视图的应用程序的MainActivity,它将两个值“Name”和“Contact”写入Firebase数据库。当他们更改它时,它会检索值,然后通过log.v方法记录它们。
我收到以下错误消息:“java.lang.ClassCastException:java.lang.Long无法强制转换为java.lang.String”。错误在AddValueEventListener方法中。
我的数据库结构
completefirebasetutorial
- 联系方式:452145233
- 姓名:“Barre”
任何人都可以帮助我吗?
public class MainActivity extends AppCompatActivity {
FirebaseDatabase database;
DatabaseReference myRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
database = FirebaseDatabase.getInstance();
myRef = database.getReference();
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//map is a data type which stores a key and a value pair
Map<String,String> map = (Map<String,String>)dataSnapshot.getValue();
String name = map.get("Name");
String contact = map.get("Contact");
Log.v("Name", name);
Log.v("Contact",contact);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
public void ButtonClicked(View view) {
EditText Nametextbox = (EditText) findViewById(R.id.EnterMessage);
EditText Numbertextbox = (EditText) findViewById(R.id.EnterContact);
String objectName = Nametextbox.getText().toString();
myRef = database.getReference("Users").child(objectName);
myRef.child("Name").setValue(Nametextbox.getText().toString());
myRef.child("Contact").setValue(Numbertextbox.getText().toString());
}
}
答案 0 :(得分:1)
看起来您的电话号码存储为数字(例如Long)而非String。您可能需要更改数据库架构或JSON或任何源。
您的联系信息将存储为值452145233
,而不是字符串"452145233"
。