how to fix kotlin lateinit property binding has not been initialized

im getting this error and need help about it as soon as possible

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.bugunneyesem/com.example.bugunneyesem.TariflerPageUser}: kotlin.UninitializedPropertyAccessException: lateinit property binding has not been initialized

My activity

package com.example.bugunneyesem

import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
import androidx.viewpager.widget.ViewPager
import com.example.bugunneyesem.databinding.ActivityTariflerPageUserBinding
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.database.ValueEventListener

class TariflerPageUser : AppCompatActivity() {
    lateinit var binding: ActivityTariflerPageUserBinding
    private lateinit var firebaseAuth: FirebaseAuth

    private lateinit var kategoriArrayList: ArrayList<ModelKategori>
    private lateinit var viewPagerAdapter: ViewPagerAdapter

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)
        firebaseAuth = FirebaseAuth.getInstance()

        binding = ActivityTariflerPageUserBinding.inflate(layoutInflater)

        setupWithViewPagerAdapter(binding.viewPager)
        binding.tabLayout.setupWithViewPager(binding.viewPager)

        binding.backBtn.setOnClickListener{
            startActivity(Intent(this,ManiAnasayfa::class.java))
        }
        binding.fabBtn.setOnClickListener{
            startActivity(Intent(this,TarifEkleAdmin::class.java))
        }
    }

    private fun setupWithViewPagerAdapter(viewPager: ViewPager){
        viewPagerAdapter = ViewPagerAdapter(supportFragmentManager,
            FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT, this)

        kategoriArrayList = ArrayList()

        //veri tabanından kategorileri yükleme
        val ref = FirebaseDatabase.getInstance().getReference("Kategoriler")
        ref.addListenerForSingleValueEvent(object : ValueEventListener{
            override fun onDataChange(snapshot: DataSnapshot) {
                kategoriArrayList.clear()

                val modelAll = ModelKategori("01", "Hepsi", 1, "")
                val modelMostViewed = ModelKategori("01", "En Çok Görüntülenen", 1, "")

                kategoriArrayList.add(modelAll)
                kategoriArrayList.add(modelMostViewed)
                //viewPagerAdapter'a ekleme yeni kategori eklerken burayada eklenmeli
                viewPagerAdapter.addFragment(
                    FoodsUserFragment.newInstance(
                        "${modelAll.id}",
                        "${modelAll.kategori}",
                        "${modelAll.uid}"
                    ), modelAll.kategori
                )
                viewPagerAdapter.addFragment(
                    FoodsUserFragment.newInstance(
                        "${modelMostViewed.id}",
                        "${modelMostViewed.kategori}",
                        "${modelMostViewed.uid}"
                    ), modelMostViewed.kategori
                )

                //refresh list
                viewPagerAdapter.notifyDataSetChanged()

                //firebase db den load diğer kategoriler için
                for(ds in snapshot.children){
                    //get data
                    val model = ds.getValue(ModelKategori::class.java)
                    kategoriArrayList.add(model!!)
                    //viewPagerAdapter a ekleme
                    viewPagerAdapter.addFragment(
                        FoodsUserFragment.newInstance(
                            "${model.id}",
                            "${model.kategori}",
                            "${model.uid}"
                        ), model.kategori
                    )

                    viewPagerAdapter.notifyDataSetChanged()
                }
            }

            override fun onCancelled(error: DatabaseError) {
                Toast.makeText(applicationContext,"SetupWithPageAdapter hata", Toast.LENGTH_LONG).show()
            }

        })

        //setup adapter to viewpager
        viewPager.adapter = viewPagerAdapter
    }

    class ViewPagerAdapter(fm: FragmentManager, behavior: Int, context: Context): FragmentPagerAdapter(fm, behavior){
        private val fragmentsList: ArrayList<FoodsUserFragment> = ArrayList()
        //kategori başlıklarının listesi for tab
        private val fragmentTitleList: ArrayList<String> = ArrayList()

        private val context: Context

        init {
            this.context = context
        }

        override fun getCount(): Int {
            return fragmentsList.size
        }

        override fun getItem(position: Int): Fragment {
            return fragmentsList[position]
        }

        override fun getPageTitle(position: Int): CharSequence {
            return fragmentTitleList[position]
        }

        public fun addFragment(fragment: FoodsUserFragment, title: String){
            fragmentsList.add(fragment)
            fragmentTitleList.add(title)
        }

    }
}

build.gradle (app)

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'com.google.gms.google-services'




android {
    namespace 'com.example.bugunneyesem'
    compileSdk 34


    defaultConfig {
        applicationId "com.example.bugunneyesem"
        minSdk 23
        targetSdk 32
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8

    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
    buildFeatures{
        viewBinding true
    }

}
def lottieVersion = '6.2.0'
dependencies {

    implementation 'androidx.core:core-ktx:1.12.0'
    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'com.google.android.material:material:1.11.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //2.1.4
    implementation 'androidx.navigation:navigation-fragment-ktx:2.7.5'
    implementation 'androidx.navigation:navigation-ui-ktx:2.7.5'
    implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
    implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
    implementation 'com.google.firebase:firebase-storage:20.3.0'
    
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.4'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.0'
    implementation "com.airbnb.android:lottie:$lottieVersion"
    
    implementation 'com.google.firebase:firebase-firestore:24.10.0'
    implementation 'com.google.firebase:firebase-database:20.3.0'
    implementation 'com.google.firebase:firebase-core:21.1.1'
    implementation 'com.google.firebase:firebase-auth:20.0.0'
    
    implementation 'androidx.work:work-runtime-ktx:2.9.0' //2.7.1
   
    implementation 'com.squareup.picasso:picasso:2.8'








}

I tried to add Filtered Categories page on myapplication there is no error in my code but when i try to run my app im gettin that error and i need help asap

>Solution :

You need to instanciate your binding before using it.

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // Instanciating the binding first
        binding = ActivityTariflerPageUserBinding.inflate(layoutInflater)
        // Use it on the content view
        setContentView(binding.root)
        firebaseAuth = FirebaseAuth.getInstance()

        setupWithViewPagerAdapter(binding.viewPager)
        binding.tabLayout.setupWithViewPager(binding.viewPager)

        binding.backBtn.setOnClickListener{
            startActivity(Intent(this,ManiAnasayfa::class.java))
        }
        binding.fabBtn.setOnClickListener{
            startActivity(Intent(this,TarifEkleAdmin::class.java))
        }
    }

Leave a Reply