的火力地堡没有setter /吸气对象
这是我的Java类:的火力地堡没有setter /吸气对象
public class OnlineMatch{
private FacebookUser firstplayer;
private FacebookUser secondplayer;
public OnlineMatch(){
}
public OnlineMatch(FacebookUser firstplayer, FacebookUser secondplayer) {
this.firstplayer = firstplayer;
this.secondplayer = secondplayer;
}
public FacebookUser getFirstplayer() {
return firstplayer;
}
public void setFirstplayer(FacebookUser firstplayer) {
this.firstplayer = firstplayer;
}
public FacebookUser getSecondplayer() {
return secondplayer;
}
public void setSecondplayer(FacebookUser secondplayer) {
this.secondplayer = secondplayer;
}
}
然后我尝试打印我的OnlineMatch对象的值(科特林代码):
val match = dataSnapshot.child("multiplayer").getValue(OnlineMatch::class.java)
if(match!=null){
System.out.println(match)
}
在这里,我能获得Android Studio的控制台上输出:
9548-19548/app.simone W/ClassMapper:上类app.simone.multiplayer.model.OnlineMatch找到-KqV44f4FUxV8ZDuqL4Y否设定器/场
08-01 19:14:38.816 19548-19548/app.simone W/ClassMapper:没有设置器14:38.816 19548-19548/app.simone W/ClassMapper:上类app.simone.multiplayer.model.OnlineMatch
08-01 19找到-KqV3sAPXPcYrtr61cDy /字段没有setter /字段-KqV2BGH7Z-Y9RxnPGpt发现阶级app.simone.multiplayer.model.OnlineMatch
您的代码是要求一切multiplayer
下,包括所有OnlineMatch的对象,你推有以前。您可以从错误消息中看到它正试图找到一个setter或字段,用于推送ID -KqV44f4FUxV8ZDuqL4Y
,它刚好在multiplayer
之下找到。如果您想获取单个OnlineMatch对象,则必须深入挖掘在multiplayer
下推送ID。因此,这应该给你的东西:
dataSnapshot.child("multiplayer/-KqV44f4FUxV8ZDuqL4Y").getValue(OnlineMatch::class.java)
在任何情况下,你需要有您所选择的推号,或者从快照的孩子发现他们,并建立从孩子一个新的快照。
Doug Stevenson,你的回答对我很有用。 我创建的字符串,我保存密钥的数组,然后我迭代子为每个特定的键:
override fun onDataChange(dataSnapshot: DataSnapshot) {
// Get Post object and use the values to update the UI
val match = dataSnapshot.children
var keysArray = KeysHandler()
if(match!=null){
// saving keys into an array
for (data in match){
keysArray.addToList(data.key)
}
// saving an OnlineMatch object into another array
repeat(keysArray.list.size){ i->
val onlineMatch = dataSnapshot.child(keysArray.getElement(i)).getValue(OnlineMatch::class.java)!!
requestsUsers.add(onlineMatch)
}
// updating GUI
updateRequests()
}
}
谢谢你帮道格,但我还是遇到了麻烦。当然,我不能拥有每个推送ID,因为它们是由Firebase自动生成的。我只需要获取一个OnlineMatch数组,就像我将它们上传到Firebase一样。这是我用来将它们上传到Firebase数据库的代码:'code fun createMatch(match:OnlineMatch)var database = FirebaseDatabase.getInstance()。getReference(“multiplayer”) val matchList = database.push() matchList .setValue(match) }' –