我正在尝试完成一个应用程序(Java和Kotlin中的几个类),我必须让用户在锦标赛之间切换选项......
意识形态是用户可以创建冠军并邀请人们参与......但是用户可以参加许多锦标赛,并且用户必须在任何时候都可以选择在锦标赛之间切换......
Firebase数据库如下所示:
因此,我必须检索标记为true的锦标赛的密钥,该密钥保存在用户节点中,然后检索有关锦标赛的信息以显示在应用程序中。
databaseReference?.child("usuarios")?.
child("$keyuser")?.
child("campeonatos")?.
addValueEventListener(object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
//Log.e("Count " ,""+dataSnapshot.getChildrenCount());
//for (DataSnapshot dataSnapshot : dataSnapshot.getChildren()) {
val children = dataSnapshot!!.children
children.forEach {
//println(it.toString())
if (it.value==true)
{
val keychamp = it.key
}
}
}
override fun onCancelled(error: DatabaseError) {
// Failed to read value
}
})
请注意,在上面的代码中,用户的密钥是$ keyuser,现在我必须将此代码放在某处并使$ keychamp可用于所有类,这样一旦用户选择了另一个锦标赛,数据就会刷新应用程序。
如何将此变量$ keychamp用于所有类,以便将其用作查询和返回锦标赛数据的路径?
答案 0 :(得分:0)
问题解决了。
我使用SharedPreferences使变量在需要时可用。当用户想要在锦标赛之间切换时,它选择一个可用的锦标赛,然后使用共享首选项更新该变量。看下面的代码!
首先,我设置这些全局变量
val PREFS_FILENAME = "com.company.prefs"
var prefs: SharedPreferences? = null
然后我实例化了一个SharedPreferences
prefs = this.getSharedPreferences(PREFS_FILENAME, Context.MODE_PRIVATE)
最后我可以更改变量的值
val editor = prefs!!.edit()
editor.putString("keyChampionship", keyChampionship)
editor.apply()
当我使用Firebase时,我将检索此变量并将其用作新冠军的节点的路径!
val keyChampionship = prefs!!.getString("keyChampionship","DEFAULT")
使用此变量创建的引用示例
val ref = FirebaseDatabase.getInstance().getReference("/championship/$keyChampionship/matches")