java - 该 Activity 已经有一个由窗口装饰提供的操作栏。更新android studio后

标签 java android

我尝试了此 link 中的所有解决方案但它们都不适合我

Process: org.dmfs.tasks, PID: 12137 java.lang.RuntimeException: Unable
to start activity
ComponentInfo{org.dmfs.tasks/org.dmfs.tasks.Main.TimerActivity}:
java.lang.IllegalStateException: This Activity already has an action
bar supplied by the window decor. Do not request
Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in
your theme to use a Toolbar instead.
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6541)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)  Caused by: java.lang.IllegalStateException: This Activity already has
an action bar supplied by the window decor. Do not request
Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in
your theme to use a Toolbar instead.
    at androidx.appcompat.app.AppCompatDelegateImpl.setSupportActionBar(AppCompatDelegateImpl.java:408)
    at androidx.appcompat.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:150)
    at org.dmfs.tasks.Main.TimerActivity.onCreate(TimerActivity.java:173)
    at android.app.Activity.performCreate(Activity.java:6975)
    at android.app.callActivityOnCreate(Instrumentation.java:1213)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 
    at android.app.ActivityThread.-wrap11(Unknown Source:0) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 
    at android.os.Handler.dispatchMessage(Handler.java:105) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6541) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

styles.xml 中的我的主题:

<style name="AppTheme" parent="Theme.MaterialComponents.NoActionBar">
        <item name="colorPrimary">@color/white</item>
        <item name="colorPrimaryVariant">@color/white</item>
        <item name="colorOnPrimary">#000</item>
        <item name="colorSecondary">@color/teal200</item>
        <item name="colorSecondaryVariant">@color/teal300</item>
        <item name="colorOnSecondary">@color/white</item>

        <item name="android:colorBackground">@color/gray1000</item>
        <item name="colorOnBackground">@color/white</item>
        <item name="colorSurface">@color/black</item>
        <item name="colorOnSurface">@color/white</item>

        <item name="colorPrimaryDark">@color/white</item>
        <item name="android:windowBackground">@color/black</item>
        <item name="android:textColorPrimary">@android:color/black</item>

        <item name="appBarColor">@color/black</item>
        <item name="cardViewColor">@color/black</item>
        <item name="alertDialogColor">@color/gray1000</item>

        <item name="viewInflaterClass">androidx.appcompat.app.AppCompatViewInflater</item>
        <item name="windowActionModeOverlay">true</item>
        <item name="android:actionModeCloseDrawable">@drawable/ic_clear</item>
        <item name="actionModeStyle">@style/ActionModeStyle</item>

        <item name="alertDialogTheme">@style/DialogTheme</item>

        <item name="palette">@array/lightPalette</item>
        <item name="fontFamily">@font/app_font</item>
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
    </style>

我的 list 中的主题 Activity :

  <activity
            android:name="org.dmfs.tasks.Main.TimerActivity"
            android:showOnLockScreen="true"
            android:launchMode="singleTask"
            android:theme="@style/AppTheme">

Activity 代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    EventBus.getDefault().register(this);

    }

    ThemeHelper.setTheme(this);
    ActivityMain3Binding binding = DataBindingUtil.setContentView(this, R.layout.activity_main3);

    mBlackCover = binding.blackCover;
    mToolbar = binding.bar;
    mTimeLabel = binding.timeLabel;
    mTutorialDot = binding.tutorialDot;
    mBoundsView = binding.main;

    mViewModel = ViewModelProviders.of(this).get(TimerActivityViewModel.class);

    setupTimeLabelEvents();

    setSupportActionBar(mToolbar);
    if (getSupportActionBar() != null) {
        getSupportActionBar().setTitle(null);
    }

此行产生错误:setSupportActionBar(mToolbar); 我想使用 Activity_main 中 ID 为“bar”的工具栏,而不是默认操作栏。我该如何解决这个问题?

注意:我没有这个错误,是我将android studio canary更新到3.6时突然产生的

最佳答案

我添加主题

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

在 list 中添加此内容

<activity
            android:name="org.dmfs.tasks.Main.TimerActivity"
            android:showOnLockScreen="true"
            android:launchMode="singleTask"
            android:theme="@style/AppTheme.NoActionBar">

关于java - 该 Activity 已经有一个由窗口装饰提供的操作栏。更新android studio后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57976638/

相关文章:

java - Hadoop:如何将 reducer 输出合并到一个文件中?

java - Scala/Java 中的简单、无忧、零样板序列化,类似于 Python 的 Pickle?

java - SparkContext.wholeTextFiles之后如何单独处理多个文件?

java - 在 Javax(在 JEE 下)上通过 Swagger 生成 API 文档?

android - 如何计算与设备无关的像素单元?

android - 通过面部检测代码进行OpenCV对象检测-ANDROID

Java定时器随机时间每次在2个值之间

android - 应用程序android中的库依赖类使用

android - 如何从 R.java 读取 xml 文件

android - Facebook SDK for Android 对依赖项的重复支持库