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))
}
}