【问题标题】:App Crashes after chaning Theme to "NoActionBar"将主题更改为“NoActionBar”后应用程序崩溃
【发布时间】:2017-12-23 09:57:06
【问题描述】:

您好,我必须将我的应用主题更改为“Theme.AppCompat.Light.NoActionBar”。但是在我更改它之后,应用程序崩溃了。我找不到问题出在哪里:/

我的目标是在工具栏上展开我的导航抽屉。但为此,我需要“NoActionBar”功能。我希望有人可以帮助我。 谢谢转发!

这是来自调试器的错误代码:

12-23 11:04:28.292 1410-1421/? E/ANDR-PERF-LOCK: Failed to apply optimization for resource: 4 level: 0

这是我的styles.xml代码:

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>

        <item name="android:listDivider">@android:color/transparent</item>
    </style>

    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

</resources>

【问题讨论】:

  • 也发布您的错误日志
  • @Tej 我在哪里可以读出来?抱歉,我是 Android Studio 的新手 :(
  • android studio 底部有一个 Logcat 菜单。打开它,你会发现你的错误在那里
  • 它们是在您运行或调试应用程序时编写的!底部有标签! @SinanKara
  • 我更新了我的问题并添加了错误代码

标签: android android-layout android-fragments


【解决方案1】:

1.转到 MainActivity.java 文件
2.注释这行代码
//NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
3.崩溃应该修复

原因 您正在使用“底部导航活动”,它崩溃的原因是因为 java 尝试从操作栏获取对象,当操作栏被禁用时,它返回 null 因为我们没有操作栏,要解决这个问题,您需要评论或删除代码 如果您转到 MainActivity.java(如果您使用的是 java),您将在第 26 行看到此代码,它会尝试设置操作栏。我们可以将代码注释掉,它应该可以正常工作。

对不起,我的英语不好。

NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);

【讨论】:

  • 它解决了崩溃问题,但底部导航不起作用。没有ActionBar的任何解决方案可以使其与导航一起使用?
  • NavigationUI.setupWithNavController(binding.bottomNavView, navController);
【解决方案2】:

专注于你的风格

  <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

这个主题Theme.AppCompat.Light.NoActionBar意味着你告诉android不要默认ActionBar

然后你打电话给ActionBar 在您的 MainAcitvity 中,这是导致您崩溃的原因。

改为使用Toolbar 并设置为ActionBar

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);

另外我认为你正在使用棒棒糖,所以在你的 style.xml 中添加这个:

<style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
</style>

在你的清单中:

<activity android:name=".activity.YourActivity"
          android:theme="@style/AppTheme.NoActionBar"><!-- ADD THIS LINE -->

【讨论】:

  • 我试过了,但它再次崩溃并出现错误代码:E/AndroidRuntime: FATAL EXCEPTION: main
  • 这不是您应该发布的错误日志。发布整个异常
  • stackoverflow.com/questions/44494458/… 查看此链接并了解如何发布错误日志
  • 对不起,我是 android studio 上的新手:/ 但我不能发布错误代码,因为它太长了
  • 我写了一个答案,我把主要活动和错误代码放在了那里
【解决方案3】:

解决方法很简单,有两种方法可以改变你的actionBar:

  1. 您可以在src/main/AndroidManifest.xml下进行更改:
android:theme="@style/Theme.AppCompat.DayNight.NoActionBar"

这会导致崩溃。

  1. 您也可以在src/main/res/values/themes.xml下进行更改:

如果你改变它例如:

<style name="Theme.MyQuizApp"
parent="Theme.MaterialComponents.DayNight.NoActionBar">

应该能解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 2015-08-21
    • 2018-07-09
    • 1970-01-01
    • 2013-03-04
    • 2018-11-28
    相关资源
    最近更新 更多