我在我的应用程序中使用appcompat v22.1.0并使用工具栏。 使用Theme.AppCompat.Light.NoActionBar时一切都很好。 当我开始执行AlertDialog时,它会产生如下错误:

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

at android.support.v7.app.AppCompatDelegateImplBase.onCreate(AppCompatDelegateImplBase.java:113)

at android.support.v7.app.AppCompatDelegateImplV7.onCreate(AppCompatDelegateImplV7.java:146)

at android.support.v7.app.AppCompatDialog.(AppCompatDialog.java:47)

at android.support.v7.app.AlertDialog.(AlertDialog.java:92)

at android.support.v7.app.AlertDialog$Builder.create(AlertDialog.java:882)

at com.ramabmtr.map.findingmoo.MainActivity.onOptionsItemSelected(MainActivity.java:216)

at android.app.Activity.onMenuItemSelected(Activity.java:2572)

at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:353)

at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:144)

at android.support.v7.internal.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:99)

at android.support.v7.internal.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:99)

at android.support.v7.internal.app.ToolbarActionBar$2.onMenuItemClick(ToolbarActionBar.java:74)

at android.support.v7.widget.Toolbar$1.onMenuItemClick(Toolbar.java:164)

at android.support.v7.widget.ActionMenuView$MenuBuilderCallback.onMenuItemSelected(ActionMenuView.java:740)

at android.support.v7.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:802)

at android.support.v7.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:153)

at android.support.v7.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:949)

at android.support.v7.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:939)

at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:598)

at android.support.v7.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:139)

at android.view.View.performClick(View.java:4084)

at android.view.View$PerformClick.run(View.java:16989)

at android.os.Handler.handleCallback(Handler.java:615)

at android.os.Handler.dispatchMessage(Handler.java:92)

at android.os.Looper.loop(Looper.java:137)

at android.app.ActivityThread.main(ActivityThread.java:4812)

at java.lang.reflect.Method.invokeNative(Native Method)

at java.lang.reflect.Method.invoke(Method.java:511)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:559)

at dalvik.system.NativeStart.main(Native Method)

基于该错误,我将主题更改为Theme.AppCompat并输入以下内容:

false

true

我的主题。 但是它会产生相同的错误。

Style.xml(旧)

@color/colorPrimary

@color/colorPrimaryDark

Style.xml(新)

false

true

@color/colorPrimary

@color/colorPrimaryDark

有人知道如何解决吗?

MainActivity.java

package com.ramabmtr.map.findingmoo;

import android.content.DialogInterface;

import android.graphics.Typeface;

import android.os.Bundle;

import android.support.v4.widget.DrawerLayout;

import android.support.v7.app.ActionBarDrawerToggle;

import android.support.v7.app.AlertDialog;

import android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.RecyclerView;

import android.support.v7.widget.Toolbar;

import android.view.View;

import android.widget.TextView;

import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

private Toolbar toolbar;

private TextView toolbarTitle;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

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

setSupportActionBar(toolbar);

getSupportActionBar().setDisplayShowTitleEnabled(false);

Typeface myTypeface = Typeface.createFromAsset(getAssets(),"fonts/panpizza.ttf");

toolbarTitle = (TextView) findViewById(R.id.toolbar_title);

toolbarTitle.setTypeface(myTypeface);

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

builder.setTitle(R.string.filter_title);

builder.setMessage("test");

builder.setPositiveButton(R.string.ok_button, new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int id) {

dialog.dismiss();

}

});

builder.setNegativeButton(R.string.cancel_button, new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int id) {

dialog.dismiss();

}

});

AlertDialog dialog = builder.create();

dialog.show();

}

}

When I start implement AlertDialog我在哪里警报对话框的代码?

不要使用应用程序上下文来夸大视图,创建对话框。 new AlertDialog.Builder(this)也可以,因为它读取alertDialogTheme属性。

@Eugen Pechanec挽救了我的一天!

请访问此链接以解决问题:stackoverflow.com/a/45940291/4832664

通过使用MainActivity.this(或YourActivityName.this)解决了我的问题

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MainActivity.this);

确保您已经Theme.AppCompat和扩展AppCompatActivity。

这是对我有用的答案。太好了,谢谢!

这个问题有这么多复杂的答案,这是最好的答案。非常简单,无需更改任何xml文件。必须假定有这个问题的人已经有有效的xml文件。这只是扩展了现有代码的使用。

简单地使用getAplicationContext()将不起作用。您必须使用上面指定的格式。

@mariozawa您的回答对我有用。谢谢。 +1!

在kotlin中,使用this @ MainActivity创建对话框,如下所示:val alertDialog = AlertDialog.Builder(this @ MainActivity).create()

基本上,您的Activity使用的是工具栏(它代替了Action Bar),因此您需要为没有Action Bar的Activity使用样式,例如Theme.AppCompat.Light.NoActionBar。

如果您有自己的对话框样式,则需要继承适当的AppCompat主题。

true

...

AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.myDialog));

但是,如果我使用AlertDialog,则会出现错误java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

Theme.AppCompat.Dialog用于主题活动,Theme.AppCompat.Dialog.Alert用于主题警报对话框。前者导致在Lollipop之前的平台上的警报对话框可见的双窗口框架。

就我而言,我将父代替换为

只需将MainActivity.this传递给Builder即可正常工作。

这不适用于Fragment。错误:android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

我收到此错误android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

@Martin使用ActivityName.this到Builder

就我而言,导致崩溃是因为我将View.getContext().getApplicationContext()作为Context传递给了Builder。这是通过使用getActivity()修复的。

使用Activity和Theme.Light主题看到了相同的异常。我的问题是导入错误,我正在使用支持项。 import android.support.v7.app.AlertDialog;代替

import android.app.AlertDialog;

宾果邦戈邦戈!这为我做到了。

这是我需要的解决方法。谢谢!!

如果在创建对话框时遇到此错误(就我而言),则应使用以下命令:

AlertDialog.Builder dialog = new AlertDialog.Builder(context, R.style.Theme_AppCompat_Light);

代替:

AlertDialog.Builder dialog = new AlertDialog.Builder(context);

这对我来说很完美!

这对我有用,但我将R.style.Theme_AppCompat_Light更改为Theme_AppCompat_Light_Dialog,以便对话框不使用全屏显示。

在清单中添加这样的Android:theme =" @ style / Theme.AppCompat"

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

android:name=".MainActivity"

解决了问题

这项工作对我来说...读了几个答案后...

像这样更改我的导入:

import android.app.AlertDialog;

代替

import android.support.v7.app.AlertDialog;

这给出了错误无法添加窗口-令牌null不适用于应用程序...因此我从以下位置更改了构建器的上下文

AlertDialog.Builder builder = new

AlertDialog.Builder(getAplicationContext());

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

请多说明一点

我和他有同样的错误。我的应用仅在显示AlertDialog时崩溃。我误导入了AppCompat版本

该探查是由于要传递来构建警报对话框的上下文而引起的。不要使用getApplicationContext()。尝试使用您的Activity上下文。使用AlertDialog.Builder builder = new AlertDialog.Builder(MainActiviy.this);

如果使用支持库,则活动扩展为AppCompactActivity,如果使用android studio创建活动,则这是默认设置。在这种情况下,将上下文作为ActivityName.this传递给构建器,或者简单地将this传递给构建器,如果您在onCreate中传递它,则无法传递getApplicationContext()。

这是我使用appcompact的样式

@color/colorPrimary

@color/colorPrimaryDark

@color/colorAccent

18sp

false

true

当我如上所述使用this或ActivityName.this时,一切工作正常(此处ActivityName是您当前活动的名称,即MainActivity.this)。

如果在片段中使用,则应将getActivity()作为上下文传递给builder而不是getContext()。

紧凑风格:)

在科特林,这对我有用:

val dialog = AlertDialog.Builder(this)

getSupportActionBar().getThemedContext()

AlertDialog.Builder builder;

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

builder = new AlertDialog.Builder(getSupportActionBar().getThemedContext(), android.R.style.Theme_Material_Dialog_Alert);

} else {

builder = new AlertDialog.Builder(getSupportActionBar().getThemedContext());

}

builder.setTitle("Alert Dialog")

.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

}

})

.setIcon(android.R.drawable.ic_dialog_alert)

.show();

请谨慎对待此类问题,我已经长时间等待此类错误。

尽管我在各处都使用Appcompat主题,并尝试使用所有样式并使用许多其他线程和答案,但它仅在android 4.4.2版本上发生。

问题是由以下行引起的:

theme="@style/Theme.AppCompat.Light.NoActionBar">

请注意" parent.theme",我已经在启动我梦on以求的项目的第一天从一些答案中复制了它,它应该是没有主题的" parent"。

theme="@style/Theme.AppCompat.Light.NoActionBar">

我只想帮助其他在线程之间运行的人找出针对他非常具体的问题的解决方法,这可能与我的问题相同,从而节省了时间。

就我而言,我必须检查并确保所有styles.xml文件都使用Theme.AppCompat。标准的styles.xml文件具有该主题,但是还有自动生成的styles(v21).xml,styles(v11).xml和styles(sw600dp).xml。简单的解决方案是将自定义的默认AppTheme样式复制并粘贴到这些文件夹中。

祝一切顺利!

您需要传递活动的上下文,而不是传递上下文。尝试使用" this"而不是" context"。这对我有用

android theme错误,关于android:您需要在此活动中使用Theme.AppCompat主题(或后代)。 更改为Theme.AppCompat会导致其他错误...相关推荐

  1. 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的。如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误。...

    调试ASP.NET程序时发生错误:在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的.如果在 IIS 中没有将虚拟目录配置为应用程 ...

  2. 【错误记录】Android Studio 编译报错 ( AppCompat does not support the current theme features )

    文章目录 一.报错信息 二.解决方案 一.报错信息 2021-08-12 14:10:32.890 30481-30481/com.example.host E/AndroidRuntime: FAT ...

  3. 【Android应用开发】Android Studio 错误集锦 -- 将所有的 AS 错误集合到本文

    . 一. 编译错误 1. "AndroidManifest.xml file not found" 错误 (1) 报错信息 报错信息 : -- Message Make : Inf ...

  4. android动态设置错误页面,Android中替换WebView加载网页失败时的页面

    我们用webView去请求一个网页链接的时候,如果请求网页失败或无网络的情况下,它会返回给我们这样一个页面,如下图所示: 上面这个页面就是系统自带的页面,你觉得是不是很丑?反正小编本人觉得非常丑,很难 ...

  5. android序列化异常,关于序列化:错误:Android中的序列化和反序列化

    每次单击按钮时,我都试图保存数据并将其存储在历史记录列表中. 尝试序列化和反序列化数据时出现错误.我不知道我在做什么错. 我能够添加到历史记录列表中,但是当我返回上一个活动并返回时,数据将不持久.在这 ...

  6. 【Android 应用开发】Android 开发错误集锦

    1. eclipse的Device中不显示手机 在eclipse中连接不上手机,出现adb server didn't ACK  fail to start daemon 错误. 出现这种原因是因为a ...

  7. android theme 使用方法,Android入门之Style与Theme用法实例解析

    就目前的互联网发展来看,已经有越来越多互联网企业都在Android平台上部署其客户端,并且为了提升用户体验,这些客户端都做得布局合理而且美观.本文所要介绍的Android的Style设计就是提升用户体 ...

  8. android theme继承原理,android – 使用Holo父主题从Theme.Light继承editText

    所以我的想法是从android:Theme.Holo.Light扩展一个自定义主题(实际上只是一种风格),然后覆盖EditText属性以使用android:Theme中的父设置. 它看起来像andro ...

  9. android模块编译错误,android studio编译出错:Android resource linking failed

    问题描述 今天在Android studio通过模拟器运行app的时候,出现了以下错误: Android resource linking failed AAPT: D:\developer\andr ...

  10. android studio抛出,Android Studio中新的项目不能运行,抛出错误(Android Studio new pr

    刚才我已经安装,并开始在Android Studio中工作,并配置我需要开始上项目的工作一切之后创建的新项目. 在新创建的项目,我没有改变任何东西,然后试图运行项目. 但它不工作,抛出一些相关性错误, ...

最新文章

  1. Python 操作字典 的几个技巧
  2. boost::geometry::assign用法的测试程序
  3. iOS之路9-#import 与#include和 @class的区别
  4. 百度地图 截图java_[Java教程]百度地图API 简单使用
  5. 疫情下的十大堵城:复工后整体拥堵下降37.3%
  6. 如何解决iOS界面操作导致导致NSTimer暂停计时的问题?
  7. Ztree加载完成后显示勾选节点
  8. 软件测试时间特性,软件测试-第九章调试特性
  9. 标准电阻阻值速查表及由来
  10. python 电路仿真spice_电路仿真SPICE入门
  11. 投资学U14 债券的估值和收益率 习题解读
  12. 12个“无用”之美,你有没有被惊艳到?
  13. photoshop 人物修容的大体步骤
  14. 资料,丰富资料,丰富资料(模式识别......)
  15. a到z的ascii码值是多少_大小写字母和数字的ascii码值是多少
  16. 当你在Mac下载东西的时候,有时候因为网络或者其他问题中断了,双击重新下载会提示你“您所请求的资源没有权限”?
  17. 机器学习 - 模型评估(TPR、FPR、K1、ROC、AUC、KS、GAIN、LIFT、GINI、KSI)
  18. (转)用户调研必修:如何建立用户体验地图
  19. 免费cocos2dx3.x视频教程
  20. 做一分钟经理之五(一分钟目标为什么有效)

热门文章

  1. RDP报表工具:六大优势铸造核心竞争力
  2. EViews8.0程序安装及注意事项
  3. 软件测评师之2021软件测评师新大纲《软件评测师教程(第2版)》(四)
  4. 期权定价数值方法之蒙特卡洛模拟【python量化】
  5. 从GPU诞生说起:AMD统一渲染架构回顾及展望(转)
  6. 发那科机器人六轴放大器保险丝熔断_太仓FANUC发那科机器人免费测试维修{苏州罗韦维修芯片级维修机器人}...
  7. 自己挖坑自己跳 之JsonMappingException: (was java.lang.NullPointerException) (through reference chain:)...
  8. 再次思考Z = X+Y,Z = XY的概率密度求解
  9. python3视频教程哪个好_python3入门视频教程
  10. 最新喜鹊相亲交友平台微信小程序源码V2.1.2版