I have a very frustrating error that I cannot explain.
I am getting the Following error. I don’t know what this means and i couldn’t figure anything else out
I have also mentioned the MainActivity.kt code and Build.Gradle and activity_main.xml code as well.
If you can please also explain what this is and what i can make sure of to avoid this in future
Error:
Process: com.abhay.expensetracker, PID: 27787
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.abhay.expensetracker/com.abhay.expensetracker.view.main.MainActivity}: android.view.InflateException: Binary XML file line #31 in com.abhay.expensetracker:layout/activity_main: Binary XML file line #31 in com.abhay.expensetracker:layout/activity_main: Error inflating class androidx.fragment.app.FragmentContainerView
MainActivity.kt
class MainActivity : AppCompatActivity() {
private lateinit var navHostFragment: NavHostFragment
private lateinit var appBarConfiguration: AppBarConfiguration
@Inject
lateinit var repo: TransactionRepo
private val viewModel: TransactionViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
val binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
viewModel
initViews(binding)
observeNavElements(binding, navHostFragment.navController)
}
private fun initViews(binding: ActivityMainBinding) {
setSupportActionBar(binding.toolbar)
supportActionBar!!.setDisplayShowTitleEnabled(false)
navHostFragment = supportFragmentManager
.findFragmentById(R.id.nav_host_fragment) as NavHostFragment?
?: return
with(navHostFragment.navController) {
appBarConfiguration = AppBarConfiguration(graph)
setupActionBarWithNavController(this, appBarConfiguration)
}
}
private fun observeNavElements(
binding: ActivityMainBinding,
navController: NavController
) {
navController.addOnDestinationChangedListener { _, destination, _ ->
when (destination.id) {
R.id.dashboardFragment -> {
supportActionBar!!.setDisplayShowTitleEnabled(false)
}
R.id.addTransactionFragment -> {
supportActionBar!!.setDisplayShowTitleEnabled(true)
binding.toolbar.title = getString(R.string.text_add_transaction)
}
else -> {
supportActionBar!!.setDisplayShowTitleEnabled(true)
}
}
}
}
override fun onSupportNavigateUp(): Boolean {
navHostFragment.navController.navigateUp()
return super.onSupportNavigateUp()
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".view.main.MainActivity">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:liftOnScroll="true"
tools:ignore="UnusedAttribute">
<!-- android:backgroundTint="@color/surface"-->
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="?actionBarSize"
app:defaultNavHost="true"
app:navGraph="@navigation/nav_graph" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
build.gradle
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.jetbrains.kotlin.android)
id("androidx.navigation.safeargs")
id("kotlin-kapt")
id("com.google.dagger.hilt.android")
}
android {
namespace = "com.abhay.expensetracker"
compileSdk = 34
defaultConfig {
applicationId = "com.abhay.expensetracker"
minSdk = 27
targetSdk = 34
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
isMinifyEnabled = 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
buildConfig = true
}
}
dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat)
implementation(libs.material)
implementation(libs.androidx.activity)
implementation(libs.androidx.constraintlayout)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
// Room
val room_version = "2.6.1"
implementation("androidx.room:room-runtime:$room_version")
annotationProcessor("androidx.room:room-compiler:$room_version")
// To use Kotlin annotation processing tool (kapt)
kapt("androidx.room:room-compiler:$room_version")
// Kotlin Extensions and Coroutines support for Room
implementation("androidx.room:room-ktx:$room_version")
// Coroutines
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.7.3")
// Navigation Components
val nav_version = "2.7.7"
implementation("androidx.navigation:navigation-fragment-ktx:$nav_version")
implementation("androidx.navigation:navigation-ui-ktx:$nav_version")
implementation("androidx.fragment:fragment-ktx:1.8.2")
// Lottie Animation Library
implementation("com.airbnb.android:lottie:4.2.0")
// Dagger Hilt
implementation("com.google.dagger:hilt-android:2.46")
kapt("com.google.dagger:hilt-android-compiler:2.46")
}
kapt {
correctErrorTypes = true
}
I have tried adding dependencies that people siad would fix it, i have tried finding a fix online but no luck.