почему ключ не добавляется к данным в firebase?

# #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. Я не совсем понимаю, о чем вы говорите более конкретно?