# #android #kotlin #firebase-realtime-database
Вопрос:
Я долго боролся с этой проблемой и не могу ее решить.Я нахожусь в режиме редактирования, пытаясь добавить ключ к данным из firebase, которые я получаю от него с помощью Ad, и обработать его с помощью AdsManager.
Ключ не должен быть равен нулю. В этой строке я проверяю, равен ли ключ нулю, затем Firebase записывает данные в empty.db.child (ad.key?: "Empty"). SetValue (ad)
. Когда я загружаю данные в Firebase, они отображаются пустыми. Без отображения ключа. Вы знаете, в чем проблема?
Реклама
data class Ad(
var user_id : String? = null ,
var name : String? = null ,
var button1 : String? = null ,
val textTex : String? = null ,
val textk : String? = null ,
val description : String? = null,
val name_ads: String?=null,
val key :String? =null
)
AdsManager
class AdsManager(val readDataColbak : ReadDataColbak?) {
private lateinit var auth: FirebaseAuth
val db =Firebase.database.getReference("main")
fun pubilshAd(ad :Ad) {
db.child(ad.key?: "empty").setValue(ad)
}
fun ReadDataDb() {
db.addListenerForSingleValueEvent(object :ValueEventListener{
override fun onDataChange(snapshot : DataSnapshot) {
val adArray =ArrayList<Ad>()
for (item in snapshot.children){
val ad =item.children.iterator().next().child("ad").getValue(Ad::class.java)
adArray.add(ad !!)
}
readDataColbak?.readData(adArray)
}
override fun onCancelled(error : DatabaseError) {
}
})
}
}
Активность редактирования1
class EditActivity1: AppCompatActivity(), FfragmentInterfes{
lateinit var mBinder : ActivityEdit1Binding
private var dialog=D()
private var chooseImageFrog:FragmentList? =null
val adsManager = AdsManager(null)
public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
imageAdapter = ImageAdapter()
mBinder=ActivityEdit1Binding.inflate(layoutInflater)
setContentView(mBinder.root)
init()
}
fun onClickPublish(view : View) {
adsManager.pubilshAd(fillAd())
}
private fun fillAd() : Ad {
var ad : Ad
mBinder.apply {
ad= Ad(
name_ads.text.toString(),
user_id.text.toString(),
name.text.toString(),
button1.text.toString(),
description.text.toString(),
textk.text.toString(),
adsManager.db.push().key
)
}
return ad
}
Комментарии:
1. «база огня говорит, что ключ равен нулю» Можете ли вы более четко показать, в чем проблема? Есть ли сообщение об ошибке? Если это так, пожалуйста, укажите точное сообщение об ошибке и трассировку стека в своем вопросе.
2. ОК. Теперь я расскажу вам более подробно
3. Достаточно конкретики?
4. Вы пытались подключить прослушиватель к
.setValue(ad)
операции, чтобы узнать, не происходит ли что-то не так?5. Я не совсем понимаю, о чем вы говорите более конкретно?