【问题标题】:Disabling the ActionBar leads to App crash禁用 ActionBar 会导致 App 崩溃
【发布时间】:2020-12-08 17:32:12
【问题描述】:

如果我通过简单地将styles.xml(在我的情况下为themes.xml)更改为来禁用我的Android应用程序中的ActionBar:

<resources xmlns:tools="http://schemas.android.com/tools">
    <style name="JARVISAPP" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryDark">@color/purple_700</item>
        <item name="colorAccent">@color/teal_200</item>
    </style>
</resources>

...应用程序在启动时立即崩溃,因为它想在不再存在的 ActionBar 上运行 setTitle() 方法。如果我使用标准的 DarkActionBar,一切正常。

编辑:这是 Android Studio 正在打印的错误:

【问题讨论】:

  • 在屏幕底部打开Logcat,对任何红色文字进行截图。这就是错误所在,可以帮助人们理解您的问题。

标签: android xml android-studio


【解决方案1】:

尝试将 MainActivity 更改为扩展 android.app.Activity 而不是 AppCompatActivity,因为后者要求您的活动/应用的主题继承操作栏主题之一,或者尝试添加

<item name="android:windowActionBar">false</item>

到 MainActivity 使用的主题

【讨论】:

    【解决方案2】:

    &lt;style name="JARVISAPP" parent="Theme.AppCompat.Light.NoActionBar"&gt;

    您的应用程序的样式继承自 Theme.AppCompat.Light.NoActionBar,因此您不会有 ActionBar。

    因此,当您调用 getSupportActionBar() 时,将是 null

    所以,你在调用getSupportActionBar().getTitle()时得到了NullPointerException

    因此,要么不要为 actionBar 设置标题,要么让您的应用的主题继承自具有如下所示操作栏的主题

    &lt;style name="JARVISAPP" parent="Theme.AppCompat.Light.DarkActionBar"&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      • 2013-10-17
      相关资源
      最近更新 更多