我该如何修复此错误:您需要在此活动中使用 Theme.AppCompat 主题(或后代)

2024-04-28

我搜索了所有互联网网站来修复此错误,但我无法解决。我只想创建带有两个按钮“是”和“否”的 AlertDialog。

这是我的代码:

import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class DialogActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dialog);

    Button btnDialog= (Button) findViewById(R.id.btnDialog);
    btnDialog.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showDialogMessage();
        }
    });
}

private void showDialogMessage(){

    AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
    // Add the buttons
    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            // User clicked OK button
        }
    });
    builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            // User cancelled the dialog
        }
    });

    AlertDialog dialog = builder.create();
    dialog.show();
}
}

这是我的风格:

<resources>

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

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

这是我的风格(v21):

<resources>
<!-- extend one of the Theme.AppCompat themes -->
<style name="AppTheme" parent="AppTheme.Base">
    <!-- customize the color palette -->
    <item name="android:colorPrimary">@color/colorPrimary</item>
    <item name="android:colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="android:colorAccent">@color/colorAccent</item>
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:colorControlHighlight">@color/colorHighLight</item>
</style>
</resources>

这是显而易见的:

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.saly.rastari" >   
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".DialogActivity"
            android:label="@string/title_activity_test"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>       
    </application>
</manifest>

当我单击对话框按钮时,出现此错误:

11-02 04:36:55.941 24352-24352/? E/AndroidRuntime: FATAL EXCEPTION: main
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime: Process: com.irannara.pda.pdaassistant, PID: 24352
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:     at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:309)
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:     at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:278)
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:     at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:252)
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:     at android.support.v7.app.AppCompatDialog.setContentView(AppCompatDialog.java:76)
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:     at android.support.v7.app.AlertController.installContent(AlertController.java:216)
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:     at android.support.v7.app.AlertDialog.onCreate(AlertDialog.java:240)
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:     at android.app.Dialog.dispatchOnCreate(Dialog.java:373)
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:     at android.app.Dialog.show(Dialog.java:274)
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:     at com.irannara.pda.pdaassistant.DialogActivity.showDialogMessage(DialogActivity.java:42)
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:     at com.irannara.pda.pdaassistant.DialogActivity.access$000(DialogActivity.java:10)
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:     at com.irannara.pda.pdaassistant.DialogActivity$1.onClick(DialogActivity.java:21)
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:     at android.view.View.performClick(View.java:4780)
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:     at android.view.View$PerformClick.run(View.java:19866)
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:739)
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95)
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135)
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5254)
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372)
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
11-02 04:36:55.941 24352-24352/? E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
11-02 04:36:55.959 718-718/? E/EGL_emulation: tid 718: eglCreateSyncKHR(1209): error 0x3004 (EGL_BAD_ATTRIBUTE)

这些链接都不能帮助我:

  • 您需要在此活动中使用 Theme.AppCompat 主题(或后代) https://stackoverflow.com/questions/21814825/you-need-to-use-a-theme-appcompat-theme-or-descendant-with-this-activity

  • ActionBarCompat:java.lang.IllegalStateException:您需要使用 Theme.AppCompat https://stackoverflow.com/questions/18063395/actionbarcompat-java-lang-illegalstateexception-you-need-to-use-a-theme-appcom

  • 需要在此活动中使用 Theme.AppCompat 主题(或后代)??? https://teamtreehouse.com/community/need-to-use-a-themeappcompat-theme-or-descendant-with-this-activity

和更多。

我怎样才能解决这个问题?


如果您在另一个值文件夹中还有其他样式文件,例如“values-v11", "values-v14“...还要编辑主题并尝试在运行之前清理您的应用程序。

编辑: 从您的活动变化来看getApplicationContext() to this:

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

to

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

因为对话框还应该扩展Appcompat Theme.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我该如何修复此错误:您需要在此活动中使用 Theme.AppCompat 主题(或后代) 的相关文章

随机推荐

  • 在 JSON-LD 中创建产品数组

    有人能发现我下面的代码有什么问题吗 它不会在 Google 结构化测试工具中进行验证 我正在尝试创建 JSON LD 代码以添加到具有多种待售产品的页面
  • Java中的逆向正则表达式

    Java中如何反转正则表达式 例如 ab de gt ed ba wow 您需要为正则表达式构建一个解析器并反转所有标记 部分 在这种情况下 ab de 是 a b d e 并反转这是 e d b a 现在想象一下群体 ab de 相反的是
  • 正则表达式没有方法测试[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 ATM机允许4 或 6 位数字PIN 码和 PIN 码不能包含任何内容 但exactly 4 位数字或恰好 6 位数字 如果函数传
  • 如何在当前打开的文件中保存 VSTO 加载项的选项?

    我正在为 Powerpoint 2010 构建 VSTO 外接程序 并且外接程序设置的选项适用于当前打开的文件 而不是每个用户的配置 我可以将这些选项保存在当前文件中 我的意思是 将自定义 XML 添加到 PPTX 文件中 吗 如果是这样
  • C# 语法高亮着色

    我可以像在 Visual Studio 中一样单独更改字段 局部变量的颜色吗 下面是 Visual Studio 中的样子 字段变量赋值 读写为绿色 局部变量赋值 读写为白色 但在 VSCode 中 本地变量和字段变量的范围都是 varia
  • NextAuth 登录未触发我的凭据提供程序中的授权方法

    我正在开发一个 Next js 项目 使用 NextAuth 进行身份验证 我遇到一个问题 登录组件中对 SignIn 的调用似乎没有触发我的凭据提供程序中的授权方法 以下是我的 nextauth js 文件的摘录 CredentialsP
  • 如何在.Net Console App中设置默认输入值?

    如何在 net 控制台应用程序中设置默认输入值 这是一些虚构的代码 Console Write Enter weekly cost string input Console ReadLine 135 135 is the default T
  • Azure Functions - 使用具有托管标识的队列触发器

    我正在尝试将托管标识与 Azure Functions V3 和 QueueTrigger 结合使用 函数代码定义如下 Function ProcessUserData public async Task ProcessUserData Q
  • C 中的可移植函数(无汇编)返回其堆栈帧的大小

    用 C 编写一个可移植函数 无需汇编 返回其堆栈帧的大小 int stackframe size 尝试如下解决 该函数在使用 VS 2010 编译时返回 228 字节 有没有办法验证其正确性 int stackframe size int
  • 无需 root 即可安装 Jekyll

    我想在共享服务器上建立一个 jekyll 博客 当我尝试安装 Jekyll 时 我收到 您没有写入权限 如何在没有 root 或 sudo 的情况下解决这个问题 更多详情 我在共享服务器上有空间 但没有 root 访问权限 我无法安装 Ru
  • C++ 中的 memset 初始化

    memset 有时用于初始化构造函数中的数据 如下例所示 一般情况下有效吗 总的来说这是一个好主意吗 class A public A private int a float f char str 35 long lp A A memset
  • 使用 geom_line 绘制多条线(基于分组)

    请帮助我 关于当我尝试在 ggplot2 中使用 geom line 绘制分组的多条线时遇到的问题 当我尝试根据一个变量 列 即 区域 对行进行分组时 问题就出现了 GDP time series analysis gt group by
  • 在 KnockoutJS 中更改模型数据时,Javascript 内存泄漏

    我们正在构建一个相当大的单页应用程序 使用 KnockoutJS 作为 数据处理程序 问题是 当更改模型数据时 垃圾收集器不会处理旧模型 看起来如此 该应用程序有大约 12 个不同的模型 其中包含计算的可观察量 您可以使用它们检索关系 在
  • 如何在Python中访问列表列表中的列

    我在 python 中有一个由列表列表建模的二维数组 我想提取该列 我进行了快速研究 找到了一种使用 numpy 数组的方法 问题是我不想使用 numpy所以我不想将列表列表转换为 numpy 数组 然后使用 1 句法 我尝试在正常的列表列
  • MySQL服务器安装配置失败

    我试图使用 Windows x86 32 位 MSI 安装程序在本地计算机 Win7 32 上安装 MySQL 服务器 安装后向导配置服务器时出现错误 配置失败 详细信息 mysql server 5 5 win32 6 Looking f
  • 在Python中重命名多个文件[重复]

    这个问题在这里已经有答案了 如何重命名以下文件 abc 2000 jpg abc 2001 jpg abc 2004 jpg abc 2007 jpg 分为以下几项 year 2000 jpg year 2001 jpg year 2004
  • 预期关闭,发现不同的关闭

    A是一个包含向量的结构B A实施add b方法添加了一个B实例到列表B B包含一个闭包属性f 如果我添加一个B到向量add b 没关系 如果我将两个向量相加add b 我收到一个错误 说两个闭包不同 这是一个最小的例子 A struct s
  • QGeoCoordinate:没有这样的文件或目录

    我正在尝试使用 QtLocation 但不能 我不明白为什么 我在 ubuntu 14 04 上使用 qt5 3 2 这很奇怪 因为我将这一行添加到我的 pro 文件中 QT network CONFIG mobility MOBILITY
  • 优化 Excel VBA 代码

    我在 Excel 中有以下 VBA 代码 其目标是在找到给定文本时删除一行 并删除其正下方的行 它需要扫描大约 70 万行 大约需要一个小时才能扫描 10 万行 有人看到有什么优化吗 Sub RemovePageHeaders Applic
  • 我该如何修复此错误:您需要在此活动中使用 Theme.AppCompat 主题(或后代)

    我搜索了所有互联网网站来修复此错误 但我无法解决 我只想创建带有两个按钮 是 和 否 的 AlertDialog 这是我的代码 import android content DialogInterface import android su