首页 > 解决方案 > 以编程方式显示android操作栏,需要帮助故障排除

问题描述

我将我的 Themes.xml 文件设置为 NoActionBar,但只需要在 1 个活动中显示我的操作栏,我尝试使用getSupportActionBar().show() 但应用程序崩溃了。我尝试过的其他替代方法是更改​​清单文件中活动的主题,但它也不起作用。需要一些帮助进行故障排除

主题.xml 文件

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Theme.Test" parent="Theme.MaterialComponents.DayNight.NoActionBar">
        <!-- Primary brand color. -->
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryVariant">@color/purple_700</item>
        <item name="colorOnPrimary">@color/white</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/teal_700</item>
        <item name="colorOnSecondary">@color/black</item>
        <!-- Status bar color. -->
        <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
        <!-- Customize your theme here. -->
    </style>
</resources>

android清单的一部分

<activity android:name=".JoinSession" android:theme="@style/ThemeOverlay.AppCompat.DayNight.ActionBar"/>

我想显示操作栏的活动

public class JoinSession extends AppCompatActivity {
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_join_session);
        getSupportActionBar().show();

标签: androidandroid-studio

解决方案


在您的清单中添加以下行:

<application
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
/>

在您的活动布局文件中:

 <android.support.v7.widget.Toolbar
 android:id="@+id/my_toolbar"
 android:layout_width="match_parent"
 android:layout_height="?attr/actionBarSize"
 android:background="?attr/colorPrimary"
 android:elevation="4dp"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

在您的 JoinSession 活动中:

  Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
  setSupportActionBar(myToolbar);

推荐阅读