android.view.InflateException:布局中的二进制 XML 文件第 22 行:错误膨胀类 androidx.fragment.app.FragmentContainerView

问题描述 投票:0回答:0

在一项活动中,我单击按钮转到下一项,应用程序崩溃,并且出现标题中描述的错误:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: rpt.com.tools.mementobibere, PID: 2151
    java.lang.RuntimeException: Unable to start activity ComponentInfo{rpt.com.tools.mementobibere/rpt.com.tools.mementobibere.ui.activities.InitUserInfoActivity}: android.view.InflateException: Binary XML file line #22 in rpt.com.tools.mementobibere:layout/activity_init_user_info: Binary XML file line #22 in rpt.com.tools.mementobibere:layout/activity_init_user_info: Error inflating class androidx.fragment.app.FragmentContainerView
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3645)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3782)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2307)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loopOnce(Looper.java:201)
        at android.os.Looper.loop(Looper.java:288)
        at android.app.ActivityThread.main(ActivityThread.java:7872)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
     Caused by: android.view.InflateException: Binary XML file line #22 in rpt.com.tools.mementobibere:layout/activity_init_user_info: Binary XML file line #22 in rpt.com.tools.mementobibere:layout/activity_init_user_info: Error inflating class androidx.fragment.app.FragmentContainerView
     Caused by: android.view.InflateException: Binary XML file line #22 in rpt.com.tools.mementobibere:layout/activity_init_user_info: Error inflating class androidx.fragment.app.FragmentContainerView
     Caused by: java.lang.NullPointerException
        at rpt.com.tools.mementobibere.ui.fragments.BaseVBFragment.getBinding(BaseVBFragment.kt:19)
        at rpt.com.tools.mementobibere.ui.fragments.info.InitUserInfoFragment.onCreate(InitUserInfoFragment.kt:52)
        at androidx.fragment.app.Fragment.performCreate(Fragment.java:3094)
        at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:504)
        at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:268)
        at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1943)
        at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1845)
        at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1782)
        at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3042)
        at androidx.fragment.app.FragmentManager.dispatchCreate(FragmentManager.java:2941)
        at androidx.fragment.app.Fragment.onCreate(Fragment.java:1969)
        at androidx.navigation.fragment.NavHostFragment.onCreate(NavHostFragment.kt:169)
        at androidx.fragment.app.Fragment.performCreate(Fragment.java:3094)
        at androidx.fragment.app.FragmentStateManager.create(FragmentStateManager.java:504)
        at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:268)
        at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1943)
        at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1845)
        at androidx.fragment.app.FragmentManager.execSingleAction(FragmentManager.java:1751)
        at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:323)
        at androidx.fragment.app.FragmentContainerView.<init>(FragmentContainerView.kt:158)
        at androidx.fragment.app.FragmentLayoutInflaterFactory.onCreateView(FragmentLayoutInflaterFactory.java:53)
        at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:136)
        at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:247)
E/AndroidRuntime:     at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:226)
        at android.view.LayoutInflater.tryCreateView(LayoutInflater.java:1073)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1001)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:965)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:1127)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:686)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:538)
        at rpt.com.tools.mementobibere.databinding.ActivityInitUserInfoBinding.inflate(ActivityInitUserInfoBinding.java:45)
        at rpt.com.tools.mementobibere.databinding.ActivityInitUserInfoBinding.inflate(ActivityInitUserInfoBinding.java:39)
        at rpt.com.tools.mementobibere.ui.activities.InitUserInfoActivity.onCreate(InitUserInfoActivity.kt:27)
        at android.app.Activity.performCreate(Activity.java:8305)
        at android.app.Activity.performCreate(Activity.java:8284)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1417)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3626)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3782)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2307)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loopOnce(Looper.java:201)
        at android.os.Looper.loop(Looper.java:288)
        at android.app.ActivityThread.main(ActivityThread.java:7872)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

这是布局:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/splash_bg_gradiant"
        tools:context=".ui.activities.InitUserInfoActivity">


        <androidx.fragment.app.FragmentContainerView
                android:id="@+id/user_info_activity_nav_host_fragment"
                android:name="androidx.navigation.fragment.NavHostFragment"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:defaultNavHost="true"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:navGraph="@navigation/user_info_nav_graph" />
    </androidx.constraintlayout.widget.ConstraintLayout>

这是Activity的代码:

@Suppress("DEPRECATION")
class InitUserInfoActivity : AppCompatActivity() {

    private var doubleBackToExitPressedOnce = false
    private lateinit var binding: ActivityInitUserInfoBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
        }

        binding = ActivityInitUserInfoBinding.inflate(layoutInflater)
        setContentView(binding.root)

    }

    override fun onNavigateUp(): Boolean {
        val navHostFragment =
            supportFragmentManager.findFragmentById(R.id.user_info_activity_nav_host_fragment) as NavHostFragment
        val navController = navHostFragment.navController
        return navController.navigateUp()
                || super.onSupportNavigateUp()
    }

    override fun onBackPressed() {
        if (doubleBackToExitPressedOnce) {
            super.onBackPressed()
            return
        }

        this.doubleBackToExitPressedOnce = true
        Snackbar.make(
            this.window.decorView.findViewById(android.R.id.content),
            "Please click BACK again to exit",
            Snackbar.LENGTH_SHORT
        ).show()

        Handler().postDelayed({ doubleBackToExitPressedOnce = false }, 1000)
    }
}

我在其他类似问题中读到,也许问题是 gradle 文件中的依赖项(我在下面报告)

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'androidx.navigation.safeargs.kotlin'
}


android {
    compileSdkVersion 33
    defaultConfig {
        applicationId "rpt.com.tools.mementobibere"
        minSdkVersion 21
        targetSdkVersion 33
        versionCode 5
        versionName "1.3"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    namespace 'rpt.com.tools.mementobibere'

    buildFeatures {
        viewBinding true
    }
    lint {
        abortOnError false
        baseline file('lint-baseline.xml')
    }
}
allprojects {
    repositories {
        maven { url "https://jitpack.io" }
    }
}
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.core:core-ktx:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    implementation 'com.github.patgdut:RadioRealButton:v2.1.2'
    implementation 'me.itangqi.waveloadingview:library:0.3.5'
    implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'com.params.progressview:step-progress:1.0.2'
    implementation 'com.daimajia.easing:library:2.0@aar'
    implementation 'com.daimajia.androidanimations:library:2.3@aar'
    implementation 'com.tbuonomo.andrui:viewpagerdotsindicator:2.1.2'
    implementation 'com.airbnb.android:lottie:3.6.0'
    implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
    implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
    implementation 'com.google.android.material:material:1.8.0'
    implementation 'com.jakewharton.timber:timber:5.0.1'
    implementation "androidx.fragment:fragment-ktx:1.6.1"
}

根据我读到的内容,添加实现

"androidx.fragment:fragment-ktx:1.6.1"
问题本来可以解决,但就我而言没有

android kotlin android-fragments navigation
© www.soinside.com 2019 - 2024. All rights reserved.