您需要在此活动中使用 Theme.AppCompat 主题(或后代)

Android Studio 0.4.5

创建自定义对话框的 Android 文档: http://developer.android.com/guide/topics/ui/dialogs.html

如果需要自定义对话框,则可以将 Activity 显示为对话框,而不是使用对话框 API。只需创建一个活动并将其主题设置为主题。你好。对话 <activity>清单元素:

<activity android:theme="@android:style/Theme.Holo.Dialog" >

然而,当我尝试这种方法时,我得到了下面的例外:

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity

我支持以下内容,并且我不能在 min 中使用大于10的内容:

minSdkVersion 10
targetSdkVersion 19

我的风格如下:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

在我的旅客名单上有这个:

 <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:theme="@android:style/Theme.Holo.Light.Dialog"
android:name="com.ssd.register.Dialog_update"
android:label="@string/title_activity_dialog_update" >
</activity>

像这样创建对话框是我希望做的事情,因为我已经完成了布局。

有人能告诉我怎样才能解决这个问题吗?

1019495 次浏览

min sdk是10。ActionBar可从api级别11获得。因此,对于10,您将使用来自支持库的AppCompat,您需要使用Theme.AppCompat或其后代。

使用

android:theme="@style/Theme.AppCompat" >

或者如果你不想在顶部的动作栏

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

更多信息@

http://developer.android.com/guide/topics/ui/actionbar.html

编辑:

我可能误读了op post。

似乎op想要一个带有活动主题的对话框。所以正如Bobbake4已经建议的那样,扩展Activity而不是ActionBarActivity

在下面的链接中查看@Dialog属性

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4_r1/frameworks/base/core/res/res/values/themes.xml/

您遇到此问题的原因是您尝试应用对话框主题的活动正在扩展ActionBarActivity,这需要应用AppCompat主题。

更新:扩展AppCompatActivity也会有这个问题

在这种情况下,将Java继承从ActionBarActivity更改为Activity,并将对话框主题保留在清单中,即非Theme.AppCompat


一般规则是,如果您希望您的代码支持旧版本的Android,它应该具有AppCompat主题并且java代码应该扩展AppCompatActivity。如果您有*不需要此支持的活动,例如您只关心Android的最新版本和功能,您可以将任何主题应用于它,但java代码必须扩展普通的旧Activity


注意:当从AppCompatActivity(或子类ActionBarActivity)更改为Activity时,还必须将带有“support”的各种调用更改为相应的调用没有“support”。因此,调用getFragmentManager而不是getSupportFragmentManager

注意:我本打算以此作为答案,但进一步的测试显示,当从命令行使用maven构建时,它仍然失败,所以我不得不编辑它成为一个问题!:-(

在我的情况下,当我得到这个错误时,我已经在使用AppCompat主题,这个错误没有多大意义。

我正在开发我的android版本。我已经依赖于应用程序Compat的apklib和jar版本,因此:

    <!-- See https://github.com/mosabua/maven-android-sdk-deployer --><dependency><groupId>android.support</groupId><artifactId>compatibility-v7-appcompat</artifactId><version>${compatibility.version}</version><type>apklib</type></dependency>
<dependency><groupId>android.support</groupId><artifactId>compatibility-v7-appcompat</artifactId><type>jar</type></dependency>
<dependency><groupId>android.support</groupId><artifactId>compatibility-v7</artifactId><type>jar</type></dependency>
<dependency><groupId>android.support</groupId><artifactId>compatibility-v4</artifactId></dependency>

现在,当我导入maven项目并从IntelliJ构建和运行时,一切都很好。

但是当我使用maven从命令行构建、部署和运行时,我仍然会遇到这个异常。

您需要做的就是将android:theme="@style/Theme.AppCompat.Light"添加到AndroidManifest.xml文件中的应用程序标记中。

ActionBarActivity需要AppTheme,所以如果你也想防止你自己的自定义关于你的应用主题,只有你必须改变你的styles.xml(以前的sdk 21),这样,可以继承一个应用程序Compat主题。

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">

为此:

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

去你的风格,把父

parent="Theme.AppCompat"

而不是

parent="@android:style/Theme.Holo.Light"

对我来说,Android SDK似乎无法找到样式定义。一切都连接正确,做一个简单的项目清理为我修复了它。

这就是我修复它的原因:我没有在清单中指定主题,而是在onCreate中为扩展ActionBarActivity的每个活动定义它:

@Overrideprotected void onCreate(Bundle savedInstanceState) {setTheme(R.style.MyAppTheme);super.onCreate(savedInstanceState);setContentView(R.layout.my_activity_layout);...}

这里MyAppThemeTheme.AppCompat的后代,在xml中定义。请注意,主题必须设置在super.onCreatesetContentView之前。

将主题样式父级更改为

 parent="Theme.AppCompat"

这对我有效…

这一个为我工作:

<applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name=".MainActivity"android:label="@string/app_name"android:theme="@style/Theme.AppCompat.NoActionBar">
<intent-filter><action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application>

您的活动正在扩展动作栏,这需要应用AppCompat.theme。从动作栏改为活动活动名称:FragmentActivityEndTime,它将解决问题。

如果您不使用操作栏,则:

android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"

我在三星设备上有这样的崩溃,即使活动确实使用了应用程序主题。根本原因与三星方面的奇怪优化有关:

- if one activity of your app has theme not inherited from Theme.AppCompat- and it has also `android:launchMode="singleTask"`- then all the activities that are launched from it will share the same Theme

我的解决方案只是删除android:launchMode="singleTask"

如果您需要在style.xml上扩展ActionBarActive:

<!-- Base application theme. --><style name="AppTheme" parent="AppTheme.Base"/>
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar"><!-- Customize your theme here. -->

如果您将应用程序的主题设置为android:Theme. Material. Light而不是应用主题库,那么您将收到“IllegalStateException:您需要使用此活动的Theme. AppCompat主题(或后代)”错误。

你有很多解决这个错误的方法。

  1. 您应该使用活动FragmentActivity而不是ActionbarActivityAppCompatActivity

  2. 如果你想使用ActionbarActivityAppCompatActivity,你应该在styles.xmlTheme.Holo.xxxx中更改为Theme. AppCompat. Light(如果需要添加到DarkActionbar

如果您不需要有关操作栏或AppCompat的高级属性,则不需要使用操作栏AppCompat

在上面的评论中复制@MarkKeen的答案,因为我有同样的问题。

我在帖子顶部声明了错误,并在添加警报对话框后发生了错误。我在清单中拥有所有相关的样式信息。通过更改警报生成器中的上下文引用,我的问题得到了解决-我更改了:

new android.support.v7.app.AlertDialog.Builder(getApplicationContext())

到:

new android.support.v7.app.AlertDialog.Builder(this)

没有更多的问题。

我的活动与部分PagerAdapter和ViewPager&片段

public class MyActivity extends AppCompatActivity implements ActionBar.TabListener......@Overridepublic void onPostResume(){super.onPostResume();try {getSupportActionBar().setDisplayShowTitleEnabled(false);}catch (NullPointerException ignored){}}

只要做那个

R.style.Theme_Mc#36825;

在你的价值观/styles.xml添加此

 <style  name="Theme.Mc" parent="Theme.AppCompat.Light.NoActionBar"><!-- ADD Your Styles  -->

</style>

在Android Studio中:将支持库添加到gradle文件并同步。编辑build.gradle(Module:app)以具有如下依赖项:

dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])testCompile 'junit:junit:4.12'implementation 'com.android.support:appcompat-v7:23.1.1'implementation 'com.android.support:design:23.1.1'implementation 'com.android.support:support-v4:23.1.1'}

我的支持库版本是23.1.1;使用您的支持库版本。

在Android清单中,只需将活动主题更改为AppTheme作为跟随代码片段

<activityandroid:name=".MainActivity"android:label="@string/app_name"android:theme="@style/AppTheme"></activity>

如果有人还在想这个问题。

试试这个:

new android.support.v7.app.AlertDialog.Builder(this)

我有同样的问题,但它解决了,当我把这个清单: android:主题="@style/Thame. AppCompat.

    <applicationandroid:allowBackup="true"android:icon="@drawable/icon"android:label="@string/app_name_test"android:supportsRtl="true"android:theme="@style/Theme.AppCompat">
...
</application>

我遇到这个问题,即使我的主题是AppCompat主题和我的活动是AppCompatActivity(或Activity,建议在其他的答案)。所以我清理,重建和重新运行项目。

构建->清洁项目;构建->重建项目;运行->运行

它可能看起来很愚蠢,但现在它工作得很好!

希望它能有所帮助!

在我的情况下,我的res目录中没有值-v21文件。然后我创建了它并在其中添加了以下代码:

  <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></style>

这个解决方案为我工作。

设计库依赖于Support v4和AppCompat支持库,因此不要在gradle中为appcompat和设计库使用不同的版本。

使用

 compile 'com.android.support:appcompat-v7:23.0.0'compile 'com.android.support:design:23.0.0'

而不是

 compile 'com.android.support:appcompat-v7:23.0.0'compile 'com.android.support:design:23.1.0'

对我来说,即使在我将Theme.AppCompat作为应用程序的基本主题之后,上述答案也不起作用。我使用的是com.android.support:design:24.1.0,所以我只是将版本更改为24.1.1。gradle同步后,它再次工作,异常消失了。在我看来,问题是一些旧版本的设计支持库。

只是把这个放在这里,以防其他答案对某些人不起作用。

对于我的Xamarin Android项目(MainActivity.cs),我更改了…

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity

…错误消失了。我意识到这不是每个人的解决方案,但它可能会给潜在问题提供线索。

对我来说是使用ContextThemeWrapper的解决方案:

private FloatingActionButton getFAB() {Context context = new android.support.v7.view.ContextThemeWrapper(getContext(), R.style.AppTheme);FloatingActionButton fab = new FloatingActionButton(context);return fab;}

Android-如何以编程方式创建FAB?

更改所需活动的主题。这对我有用:

<activityandroid:name="HomeActivity"android:screenOrientation="landscape"android:theme="@style/Theme.AppCompat.Light"android:windowSoftInputMode="stateHidden" />

如果您使用的是应用程序上下文,如下所示:

final AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());

将其更改为像这样的活动上下文:

final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

对我来说,问题通过在我的CustDialog类中将AppCompatActivity更改为活动来解决。Thame. Dialog的清单中不需要更改。

这是当你想要一个片段中的AlertDialog时

            AlertDialog.Builder adb = new AlertDialog.Builder(getActivity());adb.setTitle("My alert Dialogue \n");adb.setPositiveButton("OK", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {
//some code
} });adb.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
} });adb.show();

快速解决方案。

在styles.xml中更改基本主题父级

取代从

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

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

我也遇到了这个问题,我做了什么来解决它,并且仍然使用Holo主题是采取以下步骤:

首先我替换了这个导入:

import android.support.v7.app.AppCompatActivity;

用这一个:

import android.app.Activity;

然后将我的扩展从:

public class MyClass extends AppCompatActivity {//...

对此:

public class MyClass extends Activity {//...

并且还必须更改此导入:

import android.support.v7.app.AlertDialog;

对此导入:

import android.app.AlertDialog;

然后您可以在活动级别的清单中使用您的主题标签:

android:theme="@android:style/Theme.Holo.Dialog" />

最后,(除非你的项目中有其他类必须使用v7 appCompat)你可以清理和重建你的项目,或者在应用程序级别删除gradle构建文件中的此条目:

compile 'com.android.support:appcompat-v7:23.2.1'

如果您的项目中有其他类必须使用v7 appCompat,那么只需清理并重建项目。

我也遇到了同样的问题。因为我正在创建自定义抽屉菜单。但我忘记在我的清单中提到这样的主题

android:theme="@style/Theme.AppCompat.NoActionBar"

只要我把上面的主题添加到我的清单中,它就解决了问题。

在我的例子中,我用ApplicationContext膨胀了view。当你使用ApplicationContext时,主题/样式不被应用,所以尽管我的样式中有Theme.Appcompat,但它没有被应用并导致了这个异常。更多细节主题/样式不应用时,充气与Application ationContext使用

根据我的经验,问题是我显示对话框的上下文。在按钮内单击我以这种方式实例化AlertDialog:

builder = new AlertDialog.Builder(getApplicationContext());

但是上下文不正确并导致了错误。我以这种方式使用应用程序上下文更改了它:

在声明部分:

Context mContext;

在onCreate方法

mContext = this;

最后在我需要AlertDialog的代码中:

start_stop = (Button) findViewById(R.id.start_stop);start_stop.setOnClickListener( new View.OnClickListener(){@Overridepublic void onClick(View v){if (!is_running){builder = new AlertDialog.Builder(mContext);builder.setMessage("MYTEXT").setCancelable(false).setPositiveButton("SI", new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int id) {Task_Started = false;startTask();}}).setNegativeButton("NO",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int id) {dialog.cancel();}});AlertDialog alert = builder.create();alert.show();}}}

这是我的解决方案。

这让我不得不说出自己的答案。

由于我使用的是Theme.AppCompat.Light.NoActionBar,并且还将所有AlertDialog实例替换为支持兼容性导入,并且仍然面临v21(Lollipop)以下的问题。

我不喜欢改变主题的想法,这是正确的。所以两天后,我终于考虑了一下其他为AndroidManifest.xml指定AppTheme的库。

我发现还有一个:Paytm Checkout SDK

因此,以下更改修复了该问题。

  1. AppTheme重命名为“XYZAppThem”

  2. 使用tools:替换方法在我的项目(应用程序)的Android清单中。

    <uses-permission android:name="android.permission.INTERNET" />
    <applicationandroid:name=".XYZ"android:allowBackup="true"android:icon="@mipmap/ic_launcher_v2"android:label="@string/app_name"android:largeHeap="true"android:roundIcon="@mipmap/ic_launcher_v2_round"android:supportsRtl="true"android:theme="@style/XYZAppTheme"tools:replace="android:icon,android:theme">
    <activityandroid:name=".xyz.SplashActivity"android:launchMode="singleTask"android:screenOrientation="portrait"><intent-filter><action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>

从图片中突出显示的选项卡更改主题。输入图片描述

只管做

new AlertDialog.Builder(this)

而不是

new AlertDialog.Builder(getApplicationContext())

如果在膨胀布局时使用getApplication ationContext()作为参数,您可以尝试使用getBaseContext()代替。例如。

    View.inflate(getBaseContext(),getLayoutId() == 0 ? R.layout.page_default : getLayoutId(),null);

在我的情况下,当我试图显示对话框时出现了这样的问题。问题是在上下文中,我使用了getBaseContext()获取当前上下文,理论上应该返回活动上下文,但似乎不是,或者它在应用任何主题之前返回上下文。

所以我只是用“这个”替换了获取基础内容,现在它按预期工作。

        Dialog.showAlert(this, title, message,....);

我有一个主题<android:theme="@android:style/Theme.Dialog">的活动,用于在我的appWidget应用程序中显示对话框,我有同样的问题

我通过更改如下活动代码解决了此错误:

@Overrideprotected void onCreate(Bundle savedInstanceState) {setTheme(R.style.Theme_AppCompat_Dialog); //this line i addedsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_dialog);}

app/build.gradle中添加此依赖项:

implementation "com.google.android.material:material:1.1.0-alpha03"

更新styles.xml AppTheme的父级:

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

在我的例子中,我使用了一种名为“FullScreenTheme”的样式,尽管它似乎定义正确(它是Theme.AppCompat的后代),但它不起作用。

我终于意识到我使用的是一个AAR库,该库在内部也定义了一个名为“FullScreenTheme”的样式和Theme.AppCompat它不是后代。

通过重命名我自己的样式名称来修复它,所以现在Android正在使用正确的样式。

当您使用静态编程语言时,没有任何东西可以解决我的问题,直到我将Builder参数从“Application ationContext”更改为“this”。

这是行不通的

val dialogDelete = AlertDialog.Builder(applicationContext).setTitle("Confirmation").setMessage("Delete this photo?").setNegativeButton(android.R.string.no){ it, which ->it.dismiss()}dialogDelete.show()

以下代码作品

val dialogDelete = AlertDialog.Builder(this).setTitle("Confirmation").setMessage("Delete this photo?").setNegativeButton(android.R.string.no){ it, which ->it.dismiss()}dialogDelete.show()

在我的例子中,我将AndroidManifest中的AppTheme正确设置为继承自Theme.AppCompat的样式。然而,单个活动在AndroidManifest中的样式设置覆盖了它。

VCS本地历史恢复后不要忘记清理项目

确保在创建新的警报对话框时使用的是活动上下文,而不是应用程序或基本上下文。

而不是所有这些,关于在您的应用程序中更改很多内容……就像这个视频一样简单。

https://www.youtube.com/watch?v=Bsm-BlXo2SI

我已经用过了,所以……100%有效。

对我来说,解决方案在尝试了这里的所有解决方案之后是改变

    <activityandroid:name="com.github.cythara.MainActivity"android:label="Main"></activity>

包括一个主题:

    <activityandroid:name="com.github.cythara.MainActivity"android:theme="@style/Theme.AppCompat.NoActionBar"android:label="Main"></activity>

如果您正在使用RecyClerview Adapter类,请使用

view.getRootView().getContext()

而不是

getApplicationContext() or activity.this

首先,将其添加为导入=>导入androidx.appcompat.app.AlertDialog

我发布了这个问题有史以来最小的解决方案。我刚刚更改了

的实例化

new AlertDialog.Builder(mContex)

new AlertDialog.Builder(mContext, R.style.PreferenceDialogLight)

哪里<style name="PreferenceDialogLight" parent="Base.Theme.MaterialComponents.Dialog.Alert">

如果您在项目中使用VCS(例如GIT),请尝试:

  1. 删除您的本地项目文件;
  2. 从远程重新导入。

问题解决了!

在我的例子中,我删除了一个包含错误的文件,但不知何故,Studio仍在检测该文件并因此阻止它构建。

希望对你有帮助!

检查您是否将正确的上下文传递给您的Dialog。这发生在我身上,然后我意识到我正在使用applicationContext而不是Activity上下文启动AlertDialog.Builder

我也遇到过同样的问题。

如果要为任何类或方法提供上下文,请提供YourActivityName.this而不是getApplication ationContext()。

做这个

builder = new AlertDialog.Builder(YourActivity.this);

而不是

builder = new AlertDialog.Builder(getApplicationContext());

如果AndroidXSplashScreen库把你带到这里…

这是因为Theme.SplashScreen也没有R.styleable.AppCompatTheme_windowActionBar

if (!a.hasValue(R.styleable.AppCompatTheme_windowActionBar)) {a.recycle();throw new IllegalStateException("You need to use a Theme.AppCompat theme (or descendant) with this activity.");}

这需要在调用super()之前将主题切换到postSplashScreenTheme

@Overrideprotected void onCreate(Bundle savedInstanceState) {
/* When switching the theme to dark mode. */if (savedInstanceState != null) {this.setTheme(R.style.AppTheme);}super.onCreate(savedInstanceState);    
/* When starting the Activity. */if (savedInstanceState == null) {SplashScreen.installSplashScreen(this);}}

然后AndroidManifest.xml中的Theme.SplashScreen不会干扰。


也很相关:当使用Theme.MaterialComponents时,包含一个桥主题,它可以替代Theme.AppCompatTheme.MaterialComponents.DayNight.NoActionBar.Bridge

尽管Theme.MaterialComponents不是从Theme.AppCompat继承的,这个Bridge主题仍然有效:

<?xml version="1.0" encoding="utf-8"?><resources><style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar.Bridge" /><style name="AppTheme.SplashScreen" parent="Theme.SplashScreen" /></resources>

如果有人在运行Android 12 Splash屏幕时看到此错误,请按照以下简单步骤操作

  1. values/themes.xmlvalues-night/themes.xml中的应用主题应该有Theme.AppCompat作为父主题。

    <style name="Theme.Ace" parent="Theme.AppCompat.DayNight.NoActionBar">
  2. postSplashScreenTheme中使用这个主题作为启动屏幕主题

    <style name="Theme.App.Starting" parent="Theme.SplashScreen"><item name="windowSplashScreenBackground">@color/orange_900</item><item name="windowSplashScreenAnimatedIcon">@drawable/ic_help_outline</item><item name="windowSplashScreenAnimationDuration">2000</item><item name="postSplashScreenTheme">@style/Theme.Ace</item>
  3. 从开始的活动中删除任何主题并使用Theme.App.Starting作为应用程序主题

    <application...android:theme="@style/Theme.App.Starting">

我在这个问题上卡住了好几个小时。问题是我实现了自己的.jar依赖,在themes.xmlAndroidManifest.xml中没有使用Theme.AppCompat风格。即使在我更改和重建依赖后,它也不起作用。经过一些研究,我发现我应该使用这里所述的.aar (Android Archive)库。将我的依赖模块更改为Android库后,我可以毫无错误地构建和实现它。希望这有帮助。

我在使用SplashScreen Api时遇到了这个问题,当MainActivity中没有调用installSplashScreen()时,也会抛出这个错误

override fun onCreate(savedInstanceState: Bundle?) {installSplashScreen()super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)}

当我试图将这个免费的资源管理器模块(无意义-FilePicker)添加到我当前的应用程序时,我得到了这个异常:

java.lang.IllegalStateException:您需要在此活动中使用Thame. AppCompat主题(或后代)

要添加的模块工作代码位于以前应用程序的styles.xml文件中,并且工作正常:

<!-- You can also inherit from NNF_BaseTheme.Light --><style name="FilePickerTheme" parent="NNF_BaseTheme"><!-- Set these to match your theme --><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item>
<!-- Setting a divider is entirely optional --><item name="nnf_list_item_divider">?android:attr/listDivider</item>
<!-- Need to set this also to style create folder dialog --><item name="alertDialogTheme">@style/FilePickerAlertDialogTheme</item>
<!-- If you want to set a specific toolbar theme, do it here --><!-- <item name="nnf_toolbarTheme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item> --></style>
<style name="FilePickerAlertDialogTheme" parent="Theme.AppCompat.Dialog.Alert"><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item></style>

但这在最近的应用程序中不起作用。解决方案很简单,我只是将代码移动到themes.xml文件(并从styles.xml文件中删除)。由于某种原因,在现代版本中有这种微妙的变化。有点明显,但如果某些东西起作用,那么它通常是正确的方式…

更改清单文件从

@android:风格/主题。Hol o. Light//以应用程序中提到的为准

@android:主题="@style/主题。应用程序比较在"

这让我工作…希望它有助于

我也有类似的错误,因为我的活动正在扩展AppCompatActivity。我的案例的解决方案是将活动扩展的基类从AppCompatActivity更改为ComponentActivity。

在MaterialAlertDialogBuilder中,使用“this”而不使用“Application ationContext”

MaterialAlertDialogBuilder(this).show()