android对话框显示异常报错:You need to use a Theme.AppCompat theme (or descendant) with this activity.
今天写android实验碰到到一个问题,在用AlertDialog.Builder类构建一个对话框之后,调用Builder.show()方法时抛出异常如下:
- ::16.456 -/xyz.qlrr.sqliteapp W/System.err: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
- ::16.457 -/xyz.qlrr.sqliteapp W/System.err: at android.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:)
- ::16.457 -/xyz.qlrr.sqliteapp W/System.err: at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:)
- ::16.457 -/xyz.qlrr.sqliteapp W/System.err: at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:)
- ::16.457 -/xyz.qlrr.sqliteapp W/System.err: at android.support.v7.app.AppCompatDialog.setContentView(AppCompatDialog.java:)
- ::16.457 -/xyz.qlrr.sqliteapp W/System.err: at android.support.v7.app.AlertController.installContent(AlertController.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.support.v7.app.AlertDialog.onCreate(AlertDialog.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.app.Dialog.dispatchOnCreate(Dialog.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.app.Dialog.show(Dialog.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.support.v7.app.AlertDialog$Builder.show(AlertDialog.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at xyz.qlrr.sqliteapp.DisplayActivity.onItemClick(DisplayActivity.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.widget.AdapterView.performItemClick(AdapterView.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.widget.AbsListView.performItemClick(AbsListView.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.widget.AbsListView$PerformClick.run(AbsListView.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.widget.AbsListView.onTouchUp(AbsListView.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.widget.AbsListView.onTouchEvent(AbsListView.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.view.View.dispatchTouchEvent(View.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:)
- ::16.458 -/xyz.qlrr.sqliteapp W/System.err: at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.app.Activity.dispatchTouchEvent(Activity.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.view.View.dispatchPointerEvent(View.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.view.ViewRootImpl$ColorWindowInputEventReceiver.onInputEvent(ViewRootImpl.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:)
- ::16.459 -/xyz.qlrr.sqliteapp W/System.err: at android.os.MessageQueue.nativePollOnce(Native Method)
- ::16.460 -/xyz.qlrr.sqliteapp W/System.err: at android.os.MessageQueue.next(MessageQueue.java:)
- ::16.460 -/xyz.qlrr.sqliteapp W/System.err: at android.os.Looper.loop(Looper.java:)
- ::16.460 -/xyz.qlrr.sqliteapp W/System.err: at android.app.ActivityThread.main(ActivityThread.java:)
- ::16.460 -/xyz.qlrr.sqliteapp W/System.err: at java.lang.reflect.Method.invoke(Native Method)
- ::16.460 -/xyz.qlrr.sqliteapp W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:)
- ::16.460 -/xyz.qlrr.sqliteapp W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:)
上网百度查找答案说是因为活动是继承了android.support.v7.app.AppCompatActivity,而且主题设置为了和这个活动父类不兼容的主题。我查看代码不是这个原因。后来发现在创建AlertDialog.Builder()的使用调用的上下文是用getApplicationContext()方法获取的,将上下文改为当前的活动对象this问题就解决了。
修改前:
AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
builder.setMessage("确认").setMessage("您确定要删除这条记录吗?");
builder.setNegativeButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
TextView idView = (TextView) view.findViewById(R.id.idView);
String s = idView.getText().toString();
Integer id = Integer.valueOf(s);
SQLiteHelper sqLiteHelper = new SQLiteHelper(getApplicationContext());
boolean b = sqLiteHelper.delete(id);
Toast.makeText(DisplayActivity.this,b?"删除成功":"删除失败",Toast.LENGTH_SHORT).show();
if(b){
loadlistview();
}
}
});
builder.setPositiveButton("取消",null);
builder.show();
修改后:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("确认").setMessage("您确定要删除这条记录吗?");
builder.setNegativeButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
TextView idView = (TextView) view.findViewById(R.id.idView);
String s = idView.getText().toString();
Integer id = Integer.valueOf(s);
SQLiteHelper sqLiteHelper = new SQLiteHelper(getApplicationContext());
boolean b = sqLiteHelper.delete(id);
Toast.makeText(DisplayActivity.this,b?"删除成功":"删除失败",Toast.LENGTH_SHORT).show();
if(b){
loadlistview();
}
}
});
builder.setPositiveButton("取消",null);
builder.show();
android对话框显示异常报错:You need to use a Theme.AppCompat theme (or descendant) with this activity.的更多相关文章
- Python基础中所出现的异常报错总结
今天我们来探索python中大部分的异常报错 首先异常是什么,异常白话解释就是不正常,程序里面一般是指程序员输入的格式不规范,或者需求的参数类型不对应,不全等等. 打个比方很多公司年终送苹果笔记本,你 ...
- android studio :com.android.support:appcompat-v7:21.+ 报错
android studio :com.android.support:appcompat-v7:21.+ 报错: 在project——>app——>build.gradle修改: app ...
- saiku中过滤窗口优化及隐藏异常报错
问题一:当取消自动查询后,点击该维度应弹出过滤条件窗口,实际无反应,只有执行一次查询后再点击该维度,才能弹出过滤条件窗口 解决办法:打开WorkspaceDropZone.js文件,找到selecti ...
- OpenGL——外部读档+异常报错
从外部读取shader文件: 先添加Shader类: 再创建vertexSource.txt和fragmentSource.txt两个文件: 如图填入shader: 在shader.h宣告: 在sha ...
- android studio java工程 报错
作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 313134555 @qq.com android studio java工程 ...
- Android导入依赖appcompat-v7报错
Android导入依赖appcompat-v7报错 导入appcompat-v7时报错了 导入的是implementation 'com.android.support:appcompat-v7: ...
- 关于新建android项目时 appcompat_v7报错问题的一点总结
说下我的解决方案: 1.确保 appcompat项目的 target版本 低于 实际项目的android版本(就像.net中 低版本的 framewrok项目不能引用高版本framework项目一样) ...
- Xamarin Android真机测试报错
Xamarin Android真机测试报错 Xamarin Android真机测试报错,错误信息为INSTALL_CANCELLED_BY_USER.出现这个错误,通常都是真机上开发者选项设置错误 ...
- Android Studio support 26.0.0-alpha1 Failed to resolve: com.android.support:appcompat-v7:27.+ 报错解决方法
AS下如何生成自定义的.jks签名文件, 以及如何生成数字签名 链接:http://www.cnblogs.com/smyhvae/p/4456420.html 链接:http://blog.csdn ...
随机推荐
- Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本号
Atitit.html解析器的选型 jsoup nsoup ,java c# .net 版本号 1. 框架选型的要求 1 1.1. 文档多 1 1.2. 跨平台 1 2. html解析器特性: 1 2 ...
- C# 解压及压缩文件源代码
using System.IO; using System.Windows.Forms; using ICSharpCode.SharpZipLib.Zip; using ICSharpCode.Sh ...
- powershell输出错误信息到文件
https://stackoverflow.com/questions/8925323/redirection-of-standard-and-error-output-appending-to-th ...
- poj--1789--Truck History(prim)
Truck History Time Limit: 2000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64u Submit ...
- POJ 3667 线段树+标记
自从某次考试写线段树写挂了以后 这是第一次写线段树,,,,,, 这是一个伤心的故事-- 题意: 思路: 标记 维护从左到右的最大值 从右到左的最大值 区间内的最大值-- 然后就一搞 就出来了 //By ...
- coedforces #481Div(3)(ABCDEFG)
A. Remove Duplicates Petya has an array aconsisting of nintegers. He wants to remove duplicate (equa ...
- 链表python
无序链表.有序链表 有序列表排序通常是升序或降序,并且我们假设列表项具有已经定义的有意义的比较运算. 许多有序列表操作与无序列表的操作相同. 必须明确链表的第一项位置,一旦知道第一项. 链表实现的基本 ...
- iOS——扬声器与听筒的切换
1.扬声器模式: NSError *error; [[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPor ...
- [CEOI2007]树的匹配Treasury(树形DP+高精)
题意 给一棵树,你可以匹配有边相连的两个点,问你这棵树的最大匹配时多少,并且计算出有多少种最大匹配. N≤1000,其中40%的数据答案不超过 108 题解 显然的树形DP+高精. 这题是作为考试题考 ...
- 紫书 例题 10-29 UVa 1642(最优连续子序列)
这类求最优连续子序列的题一般是枚举右端点,然后根据题目要求更新左端点, 一般是nlogn,右端点枚举是n,左端点是logn 难点在于如何更新左端点 用一些例子试一下可以发现 每次加进一个新元素的时候 ...