【发布时间】:2016-06-15 14:37:19
【问题描述】:
我有一个数据库,我想从中选择一个特定的节点。例如,在我的情况下,我想选择用户名是“fatma”的节点。那么我怎么能在android中做到这一点?
公共类用户{
公共字符串用户名、电子邮件、密码、dateOfBirth、signUpDate;
public User(String username, String email, String password,String dateOfBirth,String signUpDate) {
this.username = username;
this.email = email;
this.password = password;
this.dateOfBirth=dateOfBirth;
this.signUpDate=signUpDate;
}
public User(){
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(String dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
public String getSignUpDate() {
return signUpDate;
}
public void setSignUpDate(String signUpDate) {
this.signUpDate = signUpDate;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", email='" + email + '\'' +
", password='" + password + '\'' +
", dateOfBirth='" + dateOfBirth + '\'' +
", signUpDate='" + signUpDate + '\'' +
'}';
}
}
Firebase.setAndroidContext(getApplicationContext());
final Firebase ref = new Firebase("https://app.firebaseio.com/");
/* String username,password;
username=txtUsername.getText().toString();
password=txtPassword.getText().toString();
User authentificatedUser=new User(username,password,null,null,null);
ConnectTask connectTask=new ConnectTask(authentificatedUser);
txtUsername.setText(connectTask.getTest());*/
Query query = ref.orderByChild("username").equalTo("testme");
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
txtUsername.setText(user.getUsername());
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
06-15 13:50:59.067 7510-7510/com.sifast.appsocle E/AndroidRuntime: 致命异常: main 进程:com.sifast.appsocle,PID:7510 com.firebase.client.FirebaseException:无法反弹输入 在 com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:183) 在 com.sifast.appsocle.Login$2$1.onDataChange(Login.java:71) 在 com.firebase.client.Query$1.onDataChange(Query.java:158) 在 com.firebase.client.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:45) 在 com.firebase.client.core.view.DataEvent.fire(DataEvent.java:45) 在 com.firebase.client.core.view.EventRaiser$1.run(EventRaiser.java:38) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 引起:com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:无法识别的字段“-KKJOx4bBAgpJ3UPD-0a”(com.sifast.appsocle.user.User 类),未标记为可忽略(5 个已知属性:“signUpDate”, “用户名”、“出生日期”、“密码”、“电子邮件”]) 在 [来源:java.io.StringReader@c6fea0d;行:1,列:26](通过引用链:com.sifast.appsocle.user.User["-KKJOx4bBAgpJ3UPD-0a"]) 在 com.fasterxml.jackson.databind.DeserializationContext.reportUnknownProperty(DeserializationContext.java:555) 在 com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:708) 在 com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1160) 在 com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:315) 在 com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:121) 在 com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2888) 在 com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2034) 在 com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:181) 在 com.sifast.appsocle.Login$2$1.onDataChange(Login.java:71) 在 com.firebase.client.Query$1.onDataChange(Query.java:158) 在 com.firebase.client.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:45) 在 com.firebase.client.core.view.DataEvent.fire(DataEvent.java:45) 在 com.firebase.client.core.view.EventRaiser$1.run(EventRaiser.java:38) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
【问题讨论】:
-
完整的logcat错误会很有用,但我可以说
Failed to bounce to type意味着数据库中的字段类型与对象中的相应变量类型不匹配 -
PID: 7510 com.firebase.client.FirebaseException: 无法在 com.sifast.appsocle.Login$2 的 com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:183) 处反弹键入$1.onDataChange(Login.java:71)
-
我需要所有这些。您可以编辑您的问题以添加它。
-
我编辑了帖子
-
所以,如您所见,您正在尝试使用“-KKJOx4bBAgpJ3UPD-0a”创建对象用户:)