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 ...
随机推荐
- 想做web前端project师应该学习些什么?
偶然间看到这篇文章.感觉博主写的挺不错的,假设你想做web前端project师的话,建议您阅读下面这篇文章,事实上web前端project师所做的工作事实上就是站点设计,有些小公司的美工事实上就是做w ...
- JS学习笔记-数据类型
最初的JS学习已经过去大半年的时间了,至此感觉对JS的使用与理解并非非常深入,因此在近期的工作之余也開始了新一轮的JS学习. 几天时间过去了,对于一些基础内容的学习还是非常有必要的,就从今天的又一次整 ...
- Opencv(3.0.0beta)+Python(2.7.8 64bit) 简单具体,一遍成功
看到非常多配置的文章,都没法正常走完流程 使用到的资源,都是今天为止最新的: python-2.7.8.amd64.msi opencv-3.0.0-beta.exe numpy-MKL-1.9.1. ...
- rest_framework-节流-总结完结篇
列表从后往前读 #1.在request中获取IP#2.访问记录 VISIT_RECORD = {} 放缓存 数据库 都可以 建议缓存import timeclass VisitThrottle(obj ...
- SecondaryNameNode合并元信息过程
- OpenCV问题集锦,图片显示不出来的问题,cvWaitKey(0),不能读图片,未经处理的异常,等问题集合
昨天根据uc伯克利的人工图像分割文件.seg,显示图像的时候调用了OpenCV的库函数,图片都能用imwrite写好,但是imshow死活显示不出来. 今天早上发现原来是imshow()后面应该加上: ...
- Oracle中根据表明获取对应表触发器名称
Select object_name From user_objects a left join all_triggers b on a.object_Name = b.trigger_name wh ...
- <Sicily> Longest Common Subsequence
一.题目描述 Given a sequence A = < a1, a2, -, am >, let sequence B = < b1, b2, -, bk > be a s ...
- vue 中使用querySelect 封装的万能选择器
function query (el) { if (typeof el === 'string') { var selector = el; el = document.querySelector(e ...
- ACM训练联盟周赛(第三场)
A.Teemo's bad day Today is a bad day. Teemo is scolded badly by his teacher because he didn't do his ...