在将主题转换为" NoActionBar"后,应用程序崩溃

时间:2017-12-23 09:57:07

标签: android android-layout android-fragments

您好我必须将我的App主题更改为" 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>

2 个答案:

答案 0 :(得分:2)

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

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

抱歉我的英语不好。

NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);

答案 1 :(得分:0)

专注于你的风格

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

此主题Theme.AppCompat.Light.NoActionBar表示您告诉Android不要采用默认ActionBar

以后你打电话给ActionBarMainAcitvity中导致崩溃的原因。

而是使用Toolbar并设置为ActionBar

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

setSupportActionBar(toolbar);

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

另外我认为您正在使用lolipop,因此请在styles.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 -->