제가 안드로이드 어플리케이션 개발을 하다가 이상한 오류 제보를 접하게 되어서 인터넷을 뒤져보니 아무것도 없었습니다 오류코드는 다음과 같습니다 앞으로 이 문제가 발생하는 분들이 빨리 문제를 찾아보시길 바랍니다.
java.lang.RuntimeException: Unable to start activity ComponentInfo{
com.xx/com.xx.mainpage.MainActivity}: java.lang.IllegalStateException: Activity com.xx.mainpage.MainActivity@f0f3ecc does not have an ActionBar set via setSupportActionBar()
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3707)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3864)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
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:2253)
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:7886)
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:1035)
Caused by: java.lang.IllegalStateException: Activity com.xx.mainpage.MainActivity@f0f3ecc does not have an ActionBar set via setSupportActionBar()
at androidx.navigation.ui.ActionBarOnDestinationChangedListener.setTitle(ActionBarOnDestinationChangedListener.kt:40)
at androidx.navigation.ui.AbstractAppBarOnDestinationChangedListener.onDestinationChanged(AbstractAppBarOnDestinationChangedListener.kt:87)
at androidx.navigation.NavController.addOnDestinationChangedListener(NavController.kt:403)
at androidx.navigation.ui.NavigationUI.setupActionBarWithNavController(NavigationUI.kt:284)
at com.xx.mainpage.MainActivity.onCreate(MainActivity.java:36)
at android.app.Activity.performCreate(Activity.java:8054)
at android.app.Activity.performCreate(Activity.java:8034)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1341)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3688)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3864)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
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:2253)
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:7886)
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:1035)
문제는 MainActivity에서 잠겨 있으며 나중에 이 코드를 주석 처리하면 정상적으로 실행될 수 있음을 발견했습니다.
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题
이 코드는 제목 표시줄을 숨기고 setSupportActionBar()와 충돌을 일으키는 것으로 의심됩니다.