在一项活动中,我单击按钮转到下一项,应用程序崩溃,并且出现标题中描述的错误:
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"
问题本来可以解决,但就我而言没有