弹出AlertDialog的时候报You need to use a Theme.AppCompat theme (or descendant) with this activity错误
今天遇到一个bug,用百度地图的时候,我对上面的标注设置了点击监听,设置的相应的反应是弹出一个AlertDialog
记录一解决bug的历程
但是Dialog却没有弹出来,一看AS下面,报了这错,起初我看我gradle.app里面
implementation 'com.android.support:appcompat-v7:24.2.1'
这句话是红色,我以为是包冲突,但是上午我安卓课上我明明也是用的这个,是可以正常弹出Dialog的
然后我查了查网上,
一种说法:很多说把Activity的父类换成android.app.Activity,我一试,但是发现继承他的话getActionBar()就没有了
二种说法:把Style.xml的ApptTheme 的风格换成没有ActionBar的,而这肯定不是我要的答案,因为我的有ActionBar
之后我可算是找到了答案(其实说到底是偷懒耍小聪明导致的)
链接在这http://www.voidcn.com/article/p-okazhnzl-hx.html
原因出在我的AlertDialog代码里
AlertDialog dialog = new AlertDialog.Builder(Passenger.this)
.setTitle("乘客信息")
.setView(view)
.create();
dialog.setTitle("用户乘客");
dialog.setCanceledOnTouchOutside(false);
dialog.show();
这里是我改正过来的,我原来Builder后面的括号里是用的getApplicationContext(),天真的我以为和Activity.this是一样的,任何地方都可以换着用
因为之前换过几次发现也没什么问题,但是我没发现安卓课上我用的就是Activity.this...
然后我百度了一下这两个的区别:
(1)对于getApplicationContext,我们可以假定它是一个父类,它属于整个应用程序共有,Activity.this可以假定为其的一个子类,该子类包
含了一些特定的引用。所以,一般可以用getApplicationContext的地方都可以用特定的Activity.this代替。
(2)在生命周期上,通过getApplicationContext得到的上下文对象们只要当前的应用程序还存在,那么该对象就会一直存在,对于Activity.this
上下文来说,只要当前的activity执行了onDestory方法,这个上下文对象就会一起被系统收回。
(3)在应用场景上,如果我们通过一个上下文对象来执行某个动作,且希望一直处于活跃状态,那么应该用getApplicationContext来获取上下
文,如数据库的操作。此时,如果采用Activity.this,那么当前Activity调用onDestory方法时,数据库就会关闭,应用程序会产生错误。
所以最后还是因为我把这两个混用了的原因,我猜测原因是Dialog对应全局上下文中的theme之类的设定和Activity.this中的是不同的所以报错
关于这两个的区别更详细的区别可以看这里,这位博主总结的很好
https://www.cnblogs.com/SZ2015/p/6884039.html
Last but not least,
如果看到这里发现我的这个不适用与自己问题的朋友可以看下面:
http://www.voidcn.com/article/p-beayjmst-nx.html
这网页下面有一系列出现这问题可能的原因的文章,总有一个适合你...
弹出AlertDialog的时候报You need to use a Theme.AppCompat theme (or descendant) with this activity错误的更多相关文章
- 报错:You need to use a Theme.AppCompat theme (or descendant) with this activity.
学习 Activity 生命周期时希望通过 Dialog 主题测试 onPause() 和 onStop() 的区别,点击按钮跳转 Activity 时报错: E/AndroidRuntime: FA ...
- 关于新版SDK报错You need to use a Theme.AppCompat theme的两种解决办法
android的一个小问题: Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme ( ...
- Android Studio:You need to use a Theme.AppCompat theme (or descendant) with this activity. AlertDialog
学习<第一行代码>的时候遇到的问题. Process: com.example.sevenun.littledemo, PID: 2085 java.lang.RuntimeExcepti ...
- 关于新版SDK报错You need to use a Theme.AppCompat theme的两种解决办法 - 转
android的一个小问题: Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme ( ...
- android对话框显示异常报错:You need to use a Theme.AppCompat theme (or descendant) with this activity.
今天写android实验碰到到一个问题,在用AlertDialog.Builder类构建一个对话框之后,调用Builder.show()方法时抛出异常如下: - ::-/xyz.qlrr.sqlite ...
- android 弹出AlertDialog的学习案例
我在编写的时候,测试的关键代码: AlertDialog.Builder builder=new AlertDialog.Builder(MainPointListActivity.this); bu ...
- vue+element项目中使用el-dialog弹出Tree控件报错问题
1. 按正常的点击按钮,显示dialog弹出的Tree控件,然后把该条数据下的已经选中的checkbox , 用setCheckedNodes或者setCheckedKeys方法选择上 , 报下面这个 ...
- Back弹出AlertDialog
package com.pingyijinren.helloworld.activity; import android.content.DialogInterface; import android ...
- 报错: Unable to start activity ComponentInfo:You need to use a Theme.AppCompat theme
转自 http://www.2cto.com/kf/201605/506596.html
随机推荐
- mysql的一些配置优化
[mysqld]lower_case_table_names=1datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysql# Di ...
- 2018.12.23 bzoj2865&&1396: 字符串识别(后缀自动机+线段树)
传送门 卡空间差评! 题意简述:给一个字串,对于每个位置求出经过这个位置且只在字串中出现一次的子串的长度的最小值. 解法:先建出samsamsam,显然只有当sizep=1size_p=1sizep ...
- 创建视图&新建表按照视图结构
create view V_tableTemp as select a.* from TEMPCLIENT a ,TEMPCLIENTSTUFF b where a.CORNO<>' ...
- C++STL queue
queue队列 先进先出 queue<int> q1; q1.push();//插入元素 q1.front();//求队头元素 q1.pop();//删除队头元素 q1.empty();/ ...
- Spring Boot项目简单上手+swagger配置+项目发布(可能是史上最详细的)
Spring Boot项目简单上手+swagger配置 1.项目实践 项目结构图 项目整体分为四部分:1.source code 2.sql-mapper 3.application.properti ...
- eclipse 创建servlet 出现继承 HttpServlet 报红线
eclipse创建servlet出现红线: 解决方案1,鼠标右键项目 -> 鼠标右击项目——>Build Path——> 点击comfigure Build Path进入-----& ...
- Codeforces Round#413 Div.2
A. Carrot Cakes 题面 In some game by Playrix it takes t minutes for an oven to bake k carrot cakes, al ...
- 分形在遥感和GIS中的应用
GIS等高线化简 遥感图像的追踪 分形matlab实现:分形应用于遥感图像处理 低分辨率和高分辨率图形它们的形状是相似的(图像增强) 贪吃蛇和蚁群算法:试想管中窥豹,一只小蚂蚁 ...
- WP8整合Bing应用,生活有求Bing
在Windows 8中,Bing应用一直随系统而存在,提供多样化的资讯.它们是我的“御用”App,因为可以根据我的使用习惯对应用进行定制. 在Windows Phone 8系统第三次官方更新之后, B ...
- 初始Yarn
YARN 产生背景 MapReduce1.x存在的问题:单点故障&节点压力大.不易扩展 资源利用率&运维成本 催生了YARN的诞生 YARN:不同计算框架可以共享同一个HDFS集群上的 ...