在我的Android應用中,我試圖從我的Firebase後端獲取活動用戶的列表。這些用戶保存在Firebase中,作爲名爲UserActive
的Java類包含有關它們的詳細信息。Android Firebase檢索數據
我以爲我做了一切都很好,但我得到一個錯誤,應用程序崩潰。我的代碼:
ChildEventListener activeUserschildEventListener = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
for (DataSnapshot userSnapshot : dataSnapshot.getChildren()) {
UserActive uA = userSnapshot.getValue(UserActive.class);
Toast.makeText(MapsActivity.this, uA.getUsername(), Toast.LENGTH_LONG).show();
}
}
我的錯誤信息:
FATAL EXCEPTION: main
Process: shomrim.warpcodes.com.shomrim, PID: 28835
com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type shomrim.warpcodes.com.shomrim.UserActive
at com.google.android.gms.internal.zzaln.zzd(Unknown Source)
at com.google.android.gms.internal.zzaln.zzb(Unknown Source)
at com.google.android.gms.internal.zzaln.zza(Unknown Source)
at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
at shomrim.warpcodes.com.shomrim.MapsActivity$2.onChildAdded(MapsActivity.java:195)
at com.google.android.gms.internal.zzahe.zza(Unknown Source)
at com.google.android.gms.internal.zzaje.zzcta(Unknown Source)
at com.google.android.gms.internal.zzajh$1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
我的火力地堡結構是這樣的:
顯然,有一些話我與UserActive
失蹤類。如果可以,請你幫助我。謝謝。
我UserActive類:
package shomrim.warpcodes.com.shomrim;
import android.location.Location;
/**
* Created by Gil on 09/18/16.
*/
public class UserActive {
String username;
Location userlocation;
String usericoninmap;
String userphonenumber;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Location getUserlocation() {
return userlocation;
}
public void setUserlocation(Location userlocation) {
this.userlocation = userlocation;
}
public String getUsericoninmap() {
return usericoninmap;
}
public void setUsericoninmap(String usericoninmap) {
this.usericoninmap = usericoninmap;
}
public String getUserphonenumber() {
return userphonenumber;
}
public void setUserphonenumber(String userphonenumber) {
this.userphonenumber = userphonenumber;
}
}
我databaseref:
groupPosShareRef = mRootRef.child("groups")
.child(currentUserGroupsString)
.child("groupPosData");
的JSON從火力地堡(出口刪除userlocation
部分之後:
"groups" : {
"-KRietwzwz_5c2oGI0Z8" : {
"groupPosData" : {
"DDJxiDshfwbJFLxHXnMg7V5fHqy1" : {
"username" : "username"
}
}
我試圖改變UserActive
POJO指向一個不包含Location對象的指針,而不是一個簡單的經緯度字符串。這就是所謂的UsersActive
:
package shomrim.warpcodes.com.shomrim;
/**
* Created by user on 10/02/16.
*/
public class UsersActive {
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserlat() {
return userlat;
}
public void setUserlat(String userlat) {
this.userlat = userlat;
}
public String getUserlon() {
return userlon;
}
public void setUserlon(String userlon) {
this.userlon = userlon;
}
public String getUsericoninmap() {
return usericoninmap;
}
public void setUsericoninmap(String usericoninmap) {
this.usericoninmap = usericoninmap;
}
public String getUserphonenumber() {
return userphonenumber;
}
public void setUserphonenumber(String userphonenumber) {
this.userphonenumber = userphonenumber;
}
String username;
String userlat;
String userlon;
String usericoninmap;
String userphonenumber;
}
還是在同一直線上,並與同樣的錯誤應用程序崩潰:
UsersActive uA = userSnapshot.getValue(UsersActive.class);
新的火力地堡JSON:
"groups" : {
"-KRietwzwz_5c2oGI0Z8" : {
"groupPosData" : {
"DDDDDDD" : {
"username" : "username1"
},
"DDJxiDshfwbJFLxHXnMg7V5fHqy1" : {
"username" : "username2"
}
}
請發表您的UserActive java代碼 –
謝謝Nishant。現在因爲它不工作,我沒有填寫「字符串usericoninmap,字符串userphonenumber」字符串。但我不認爲這是問題所在。 –
也分享你的數據庫參考添加這個監聽器的地方。我認爲在ref和你的pojo –