
Android 疑难杂症
文章平均质量分 78
yechaoa
CSDN博客专家、掘金签约作者、infoQ 专家博主、阿里云专家博主、51CTO专家博主、华为云云享专家;现就职于阿里巴巴,研究方向包括但不限于大前端、端基础架构与中间件、性能优化等。
展开
-
mTabLayout.setOnTabSelectedListener is deprecated
用addOnTabSelectedListener代替,方法一样。源码:/** * @deprecated Use {@link #addOnTabSelectedListener(OnTabSelectedListener)} and * {@link #removeOnTabSelectedListener(OnTabSelectedListener)}.原创 2017-08-02 12:01:02 · 1666 阅读 · 0 评论 -
list.remove(index)返回flase,移除失败
简述代码:在Adapter中点击删除用观察者模式传一个index给Activity,在Activity中根据index移除list中的值并更新,最后上传逻辑没有问题,但是在移除的时候出现问题了,index是接收到了,但是并不能移除。那原因就在移除上了重点来了:此处remove有两个方法,一个传入int,一个传入ObjectInteger index =原创 2017-07-11 11:05:51 · 859 阅读 · 0 评论 -
因为CircleImageView导致Binary XML file line #96: Error inflating class <unknown>
android.view.InflateException: Binary XML file line #96: Error inflating class 明显可以看出是xml布局文件导致的错,但是布局文件并没有提示报错,那就是运行时的异常,根据log提示是因为CircleImageView布局代码:<cn.test.widget.CircleImageView原创 2017-06-29 16:15:49 · 1785 阅读 · 0 评论 -
[Accessibility] Missing contentDescription attribute on image
Missing contentDescription attribute on image在图像上缺少内容描述属性写一个简单的ImageView(ImageButton)却出现警告,提示如上简单的说就是没有描述,类似于html中img标签中的alt属性解决办法:既然缺少contentDescription属性,加上就是了原创 2017-05-31 15:31:19 · 957 阅读 · 0 评论 -
Cause: com.android.dex.DexException: Multiple dex files define Lcom
原因:添加了重复的jar包解决:检查项目,删除重复的jar包即可stackoverflow:http://stackoverflow.com/questions/7870265/unable-to-execute-dex-multiple-dex-files-define-lcom-myapp-rarray原创 2017-05-18 18:01:58 · 1713 阅读 · 0 评论 -
setOnCheckedChangeListener为什么执行了两次
问题描述:最近使用RadioGroup控件,onCheckedChanged方法被执行了两次,困扰了一阵子。[java] view plain copymListenKindGroup = (RadioGroup) findViewById(R.id.listen_kind_group); mListenKindGroup.se转载 2017-05-09 18:41:30 · 3932 阅读 · 0 评论 -
'setBackgroundDrawable()' is deprecated,setBackgroundDrawable过时
setBackgroundDrawable()在API 16(4.1)已经过时了4.1之后有两种方法可以代替:a、setBackgroundResourceb、setBackground例如:textView.setBackgroundResource(R.drawable.icon);textView.setBackground(原创 2017-05-26 16:24:30 · 3544 阅读 · 0 评论 -
'getDrawable(int)' is deprecated,getDrawable过时
getDrawable(int)在API 21(5.0)已经过时了5.0之后使用:ContextCompat.getDrawable(context, R.drawable.your_drawable)例如:imageView.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.icon));原创 2017-05-26 15:46:21 · 3860 阅读 · 0 评论 -
'getColor(int)' is deprecated ,getColor过时
'getColor(int)' 在API 23(6.0)已经过时了6.0之后使用:ContextCompat.getColor(context, R.color.color_name)例如:textView.setTextColor(ContextCompat.getColor(this, R.color.colorPrimary));源码:@Col原创 2017-05-26 11:37:03 · 3775 阅读 · 0 评论 -
typo in word。android studio对于错误拼写/不识别的英文单词,给予波浪提示。
使用自己的名字当Tag。却发现有个非常不用好的提示。波浪,我浪个你妹。Typo:In word ‘miyuehu’ less...(Ctrl+F1)spellchecker inspection helps locate typos and misspelled in your code,comments and literals, and fix them转载 2017-05-05 16:38:17 · 6207 阅读 · 0 评论 -
Do not concatenate text displayed with setText,use resource string with placeholders.
警告大意:应该使用资源字符串来显示文本占位符与在xml布局中直接写汉字的警告是一个意思字符串拼接也好,直接写的汉字也好,都应该在strings.xml文件中声明,然后引用for example:layout.xml文件引用strings.xml文件中声明原创 2017-05-05 16:22:10 · 1603 阅读 · 0 评论 -
Android Studio提示Field can be converted to a local varible
Field can be converted to a local varible变量会有黄色提醒,有严格要求或者强迫症的人是受不了的这个提示的意思是:检测到这个变量可以使用局部变量替换,建议删除并写成局部变量。解决:直接删除这个变量,在使用的地方直接声明和实例化就可以了原创 2017-04-20 11:03:18 · 2745 阅读 · 0 评论 -
页面切换时为什么会自动跳到recyclerView的位置?
原因:页面切换时RecyclerView获得了焦点,RecyclerView的 focusableOnTouchMode属性默认是true,所以页面切换时RecyclerView自动获得焦点就滚动到头部。抢焦点的问题。解决:将RecyclerView的父控件的设置android:focusableInTouchMode="true" 。不行就再加上android:foc原创 2017-04-19 18:35:15 · 3102 阅读 · 0 评论 -
RecyclerView的item宽度不能全屏显示
错误写法:@Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_complain_list, null, false);原创 2017-04-18 16:29:07 · 4607 阅读 · 2 评论 -
Caused by: java.lang.NoSuchMethodError:No virtual method isSuccess()Z in class Lretrofit2/Response;
异常:Caused by: java.lang.NoSuchMethodError: No virtual method isSuccess()Z in class Lretrofit2/Response; or its super classes (declaration of 'retrofit2.Response' appears in /data/data/com.hengda.sma原创 2017-08-20 01:49:06 · 6550 阅读 · 0 评论 -
Uncaught TypeError: Cannot read property 'getItem' of null
WebSettings settings = mWebView.getSettings();settings.setDomStorageEnabled(true);//开启DOM原创 2017-09-04 17:25:33 · 6275 阅读 · 0 评论 -
Android Studio完美解决 you are about to commit crlf line separators,warning: CRLF will be replaced by LF
在使用Git的时候你可能会遇到you are about to commit crlf line separators...或者warning: CRLF will be replaced by LF in...关于CRLF和LF的问题就不赘述了,关键是发现了一个简单粗暴的解决办法!!解决办法出现这个问题之后文件是commit不了的,打开文件,然后在右下角会有编码U...原创 2018-04-25 23:23:58 · 12066 阅读 · 1 评论 -
Android 百度地图定位第一次成功,后续返回505
第一次定位成功,后续getLocType返回505,getCity什么的也一直都是null。首先应该再阅读一遍官方文档,查漏补缺。而且官方文档一般也有常见问题的解决方案。在官方的论坛中找到关于返回505的帖子,告诉我key的配置不对。在key的配置中,可能出错的只有SHA1和package,package一般也不会出错,那只能是SHA1了,SHA1分两个版本,我这里只填写了...原创 2018-04-23 15:51:06 · 3877 阅读 · 2 评论 -
Android 通过图片url获取图片的宽高
//获取图片真正的宽高 Glide.with(mContext).asBitmap().load(list.get(0).imagePath).into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap bitmap, Transit...原创 2018-04-22 18:38:40 · 9532 阅读 · 1 评论 -
'E:\AndroidSDK\platform-tools\adb.exe start-server' failed -- run manually if necessary
error: could not install smartsocket listener: cannot bind to 127.0.0.1:5037: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 (10048) ‘E:\AndroidSDK\platform-tools\adb.exe start-server’ failed – run manually if...原创 2018-04-11 09:46:13 · 7715 阅读 · 0 评论 -
Fetch failed: unable to access': E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
过年期间在家里改了代码,上班后准备更新的,结果报错 Fetch failed: unable to access ‘https://github.com/…’: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version先是去github看了看,可以打开呀,然后又重新关联git,还是不...原创 2018-03-01 17:18:41 · 3552 阅读 · 0 评论 -
Multiple dex files define Lcom/alibaba/sdk/android/utils/AMSDevReporter$AMSReportStatusEnum;
异常概述:首先这个异常是因为引入了重复的包导致的,常见的比如导入了多个v4包、utdid包等。 如果项目中业务比较复杂,引入的三方包和SDK比较多的话,这个问题就不是那么好排查,所以在引入的时候要做好工作,比如备注。这个异常分析来看,可以初步确定是阿里的utils包重复,但是又不确定具体是哪两个业务冲突,最后咨询阿里技术支持才得以解决。 项目中集成了友盟的推送SDK,且刚升级到最新版本原创 2018-01-30 16:30:52 · 2849 阅读 · 1 评论 -
Android三步集成阿里热修复——Sophix
准备工作打开阿里云找到产品找到移动热修复创建APP(在右上角)然后会有app id 等信息,配置会用到(复制的时候注意会有空格) 官方集成文档1、配置添加maven仓库地址:repositories { maven { url "http://maven.aliyun.com/nexus/content/repositories原创 2018-01-25 18:14:16 · 1120 阅读 · 1 评论 -
关于AndroidManifest.xml 添加多个 provider节点问题
我们知道在android7.0,修改了对私有存储的限制,导致在获取资源的时候,不能通过Uri.fromFile(..)来获取uri了,但是在写入数据的时候是可以通过Uri.fromFile(..)来获取uri的,android 官网给出的解决办法是通过FileProvider来解决这一问题,我们需要在AndroidManifest.xml 配制provider节点provider an转载 2018-01-26 13:35:23 · 5471 阅读 · 0 评论 -
Android WebView选择图片、发送图片
WebView控件是经常用到的,如果WebView中有选择图片这种操作,光是settings.setJavaScriptEnabled(true); 还是不够的,还需要重写WebChromeClient 和 WebViewClient初始化操作mWebView.setWebChromeClient(new MyWebChromeClient());mWebView.setWeb原创 2018-01-23 16:44:21 · 2511 阅读 · 0 评论 -
Android WebView设置Cookie
业务原理啥的就不讲了,直接上代码 /** * 同步cookie * @param url 要加载的地址链接 */ private void syncCookie(String url) { CookieSyncManager.createInstance(this); CookieManager cookieManager原创 2018-01-23 15:37:37 · 3033 阅读 · 0 评论 -
Error:Error converting bytecode to dex: Cause: com.android.dex.DexIndexOverflowException,解决65536
项目中的方法数太多,包括自己的、第三方等,超过65536就会报这个错,无法生成apk文件。官方解决方案:https://developer.android.com/intl/zh-cn/tools/building/multidex.html解决办法:1.app:build.gradleapply plugin: 'com.android.application'android { defau原创 2018-01-03 11:32:42 · 846 阅读 · 0 评论 -
No adapter attached; skipping layout 原因、解决办法
当问题出现的时候不光要解决还要知道为什么众所周知,RecyclerView的出现不光可以代替ListView,也可以代替GridView,所以啊大胸弟,你在用的时候要告诉系统你要代替的是哪个啊,就是所谓的初始化配置,不配置就会警告报错、不显示数据分割线可以不设置,动画也可以不设置,但是LayoutManager必须设置。随意示范一下 LinearLayoutManager linea原创 2017-12-21 15:50:18 · 46111 阅读 · 10 评论 -
Android Studio 3.0输入法问题解决方案
从升级3.0这几天以来,听到最多的吐槽就是输入法的问题,而我在使用中完全没有任何问题我用的是搜狗输入法,唯一的差别就是可能版本跟大多数人不一样,我用的是智慧版的之所以换智慧版,也是因为在as2.2版本的时候使用也是有问题,然后就在网上搜了一下,果然不止我一个人遇到,然后有推荐使用智慧版,换了之后确实解决问题了,一直到3.0也没有任何问题,所以推荐给大家,希望有所帮助。搜狗输入法原创 2017-10-30 10:22:35 · 8407 阅读 · 6 评论 -
Error:com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details解决办法:打开项目根目录gradle.properties文件,加上android.enableAapt2=false,关闭Aapt2编译# Project-wide Gradle settings.# IDE (e.g. Android原创 2017-12-09 17:04:10 · 1263 阅读 · 0 评论 -
Gradle sync failed: Cause: com.android.build.gradle.api.BaseVariant.getOutputs()Ljava/util/List
Android Studio 3.0升级报错:Gradle sync failed: Cause: com.android.build.gradle.api.BaseVariant.getOutputs()Ljava/util/List根据第一条提示,重新下载编译也还是不行然后第二条重启也还是不行那看来只有第三条了,顺便新建了个项目测试,是可以运行的,所以可以确定的是升原创 2017-10-27 13:30:57 · 11130 阅读 · 2 评论 -
Activity中getIntent为什么获取不到值?
Activity有四种启动模式,一般为默认。当Activity的启动模式为singleTask的时候,通过Intent传值,getIntent是接收不到值的,为null。因为不同的启动模式,走的方法也不一样。当页面再次被调用的时候,先走onNewIntent方法再走onRestart。所以需要重写onNewIntent方法,而且此方法在Activity Finish之后是不执行的。原创 2017-03-18 12:26:02 · 11250 阅读 · 0 评论 -
解析Failure [INSTALL_FAILED_CONFLICTING_PROVIDER]
程序运行安装不上,提示如上图。提示是要卸载一个已经存在的application,虽然开发着几个项目,但是包名都不一样,没道理啊。clean、build也都没用。后来在Stack Overflow上找到回答,大概意思:在AndroidManifest.xml文件中,provider中的android:authorities的值必须是唯一的。多个项目引用同一个类库(Module原创 2017-03-22 11:02:46 · 12595 阅读 · 0 评论