安卓开发难点攻克记录(持续更新)


1、修改密码界面自定义键盘删除键显示异常

现象描述:两个页面加载的同一个键盘布局,但是显示时却存在差异

其他界面键盘正常显示
删除键显示异常

解决方案:在AndroidManifest.xml文件里,找到修改密码界面,添加一个透明背景,保持和登录界面设置一样,键盘删除键显示恢复正常。但是这里有一个问题:Activity的背景是否透明会影响到键盘的显示吗?我问了公司李老师,他说这个样式可能影响到了button的显示,具体原因还不清楚。现在问题时解决了,但是原因还不够明确。

android:theme="@android:style/Theme.Translucent"
登录界面设置
修改密码界面设置

2、后台返回数据解析异常,导致无法登录成功

现象描述:客户端用账号、密码、验证码去后台请求数据时,一直显示登录中,请稍等。

一直显示等待层

解决方案:用Debug调试,显示已经从后台请求到数据,在用Gson把JsonObject解析成泛型类是出现异常,所以导致没有走成功的回调。

拿到后台数据,解析成泛型类异常

程序进入了异常,显示重复字段MSG

java.lang.IllegalArgumentException: class com.yitong.ares.app.android.entity.login.AresLoginVo declares multiple JSON fields named MSG

然后我在实体类AresLoginVo发现没有重复字段啊,于是浪费了很长时间在纠结,为什么jsonObject转换成泛型类会出错呢?难道是Gson的bug?????

最后发现,原来AresLoginVo继承了一个基类,基类里已经有了MSG字段,所以出现了重复。删除重复字段后,解析成功,走了成功回调,登录成功。

开始下载资源包

总结:后台返回字段跟我们实体类里的字段数量不一定一一对应,Gson只会解析我们实体类里包含的字段。但是字段名字一定要相同,且不能重复,不然就会解析不到或者解析出错。


3、接收到后台数据,用Gson解析成泛型类时异常

现象描述:登录界面,一直提示“加载中,请稍候....”

登录界面显示

问题解决:Debug发现,在登录时,会去后台请求数据,得到的数据解析成JsonObject,然后再解析成当前类。在解析成当前类时异常

得到数据如下:

{
  "NAME": "汪文龙",
  "LAST_LGN_DATE": "2017-04-05",
  "STATUS": "1",
  "ORG_ID": "010000",
  "LAST_LGN_TIME": "14:08:06",
  "MSG": "交易成功!",
  "USE_FIRST_MARK": "1",
  "ROLE_IDS": "1009,1020,4",
  "MOBILE": "13655668899",
  "SEX": "",
  "LOGINTOKEN": "4933644553CD06DC40b8bdd8c1704170",
  "EXT_ORG_ID": "",
  "USER_TYP_DESC": "0"
}

解析报的错误:

java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class: com.yitong.ares.app.android.entity.login.AresLoginVo. Forgot to register a type adapter?

大概意思是:

java.lang.unsupportedoperationexception :试图序列化java.lang.class : com.yitong.ares.app.android.entity.login.aresloginvo.忘记注册类型适配器?

我仔细看了我的实体类,核对了字段,没有发现什么问题。最后请教大神,他让我删除HttpUtils里一行log打印的代码:

           try {
                //String转换为JsonObject
                JsonObject jsonObj = new JsonParser().parse(decryData).getAsJsonObject();
                if (classOfT == String.class) {
                    msg.what = 1;
                    msg.obj = jsonObj.toString();
                } else {
                    //JsonObject转换为泛型类
                    T result = new Gson().fromJson(jsonObj, classOfT);
                    msg.what = 1;
                    msg.obj = result;
                    Log.d(TAG, "analysisReturn: "+new Gson().toJson(result.getClass()));//删除改行代码
                }
            } catch (Exception e1) {
                msg.what = 0;
                msg.arg1 = RequestErrorInfo.ERROR_CODE_JSON_PARSE;
                msg.obj = RequestErrorInfo.getError(e1, RequestErrorInfo.ERROR_CODE_JSON_PARSE, e1.getMessage(), url);
            }

然后解析成功。

总结:我当初加这一行代码是因为我想看一下,每次调用时有没有解析成当前类。最后大神跟我说,这里写的有错误,应该去掉getClass().


4、华为手机显示H5页面字体显示异常,但在其他手机上显示正常

现象描述:

华为手机显示异常

中兴手机正常显示

问题解决:我初步怀疑是手机型号不兼容,前端说是我这webview浏览器问题。
总结:目前还没解决,请大神给予解释


5、解决华为手机连不上电脑,Android studio不显示设备问题

现象描述:公司提供的华为p9测试机,连在电脑上没反应,开发者选项和Usb调试都打开了,我下载了豌豆荚、360手机助手都连接不上。
问题解决:我今天闲着没事,又来搞这个问题。根据华为手机助手未连接给的提示,我连接上了,下面在总结里提出注意事项。
总结:
①设置---高级设置---安全----勾选“允许HiSuite通过HDB连接设备”

如图

②USB连接方式改为MTP,而不是仅充电

如图

③、设置----关于手机----连续点击版本号,进入开发者模式---开发者调试和USB调试都打开

打开开发者选项
打开USB调试

完成了以上操作如果还是连不上,那只有一个办法,,,,,,把手机砸了试试


6、webVeiw加载H5页面白屏,导致手机卡屏

现象描述:点击信用卡申请,开始加载H5页面,显示白屏;返回后一直卡屏。如果一直在白屏界面,大概一二十分钟后才会加载到页面。

点击信用卡申请

进去后白屏

问题解决:我加载其他页面都没问题,只有这个页面有问题,初步怀疑前端页面有问题。但是前端给的解释是,ios加载都没问题,而且自己在浏览器上打开这个页面是没问题的。那我。。。。咋搞?定位问题呗,找了一天的问题,最后加载了几天前的资源包(前端代码),发现没问题。基本确定是前端这两天改的代码导致的。然后一点点比对,发现前端里面写了一个不存在的图片,我了个擦??顿时我真想把前端喷一顿,让老子背了一天的锅。结果前端给我的解释是:为什么ios不报错?这说明你们框架不完善,不够健壮。我。。。。。。。。。。

问题在这里,image文件夹里根本不存在这个default_photo.png

总结:到这里我就几个疑问了:
①、前端写了一个不存在的图片,为什么不报错??
答:前端没有编译的工具,即使错了,就会显示默认图片,不会报错。
②:为啥ios加载webView时很快可以加在出来?android需要很冲时间加载?
答:我也不知道,求大神解释。


7、根据名字、和日期查询数据库失败

现象描述:输入名字和日期查询(时间段查询,例如查询大于2017-03-14,小于2017-03-17时间段的信息)失败,单一条件查询也不成功。但是根据身份证号查询是可以的。

条件查询
查询条件

问题解决:
分析:身份证查询可以的,说明我这个查询功能是可以的。但是为什么根据名字和日期查询怎么失败了呢?我准备一个一个试验,先用名字查询,结果失败了。我在想难道是查询条件不能是中文?结果问了朋友,他说貌似是可以的,让我把数据库导出来看看,用可视化工具SQLiteExpertPers查看数据库,而且可以执行sql语句,让我试试。然后我下载软件,结果手机里数据库不能查看,更无法导出。想看的话有两种办法:一,root手机;二,用代码实现把数据库导出,并写在内存卡里,就可以看到了。想想好麻烦啊,就在琢磨到底怎么回事?忽然脑子一转,是不是我存在数据库里的名字有空格? 或者我查询时有空格?马上debug查看存进去的信息,不看不知道,一看我了个草,真的有空格。问题找到了,去空格存储, 去空格查询,问题解决了。第二个问题,为什么日期不能查?这个结果我也早就预料到了,存的是个字符串,肯定无法比对大小的。但是日期怎么存才能比对呢?问了许多人说,日期存时间戳就可以比对了。但是时间戳格式好像是“2017-03-14 09:21:23”,这样的年月日时分秒格式。但是前端给的格式是"2017-03-12"这样的格式,这怎么比?最终还是找到了办法,在查看代码时发现了存了一个保存时间,long类型的,我能把查询时间转成long类型,不就可以比较了吗?

locDataTable.setSAVE_TIME(Long.valueOf(System.currentTimeMillis()));//保存时间(查询条件,必填)

结果找到了答案,在原来的字符串后面拼接上时分秒,再用SimpleDateFormat转换,如下:

           if (!"".equals(startDate)) {

                //把"2017-04-13"这样的类型转换为"2017-04-13 00:00:00",再转换为long类型的时间,再与数据库里的SAVE_TIME的比较
                String startDate1=startDate+" 00:00:00";
                SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                Date date=sdf.parse(startDate1);
                long startTime= date.getTime();

                //拼接查询条件
                if (builder == null) {
                    builder = WhereBuilder.b("SAVE_TIME", ">=", startTime);
                } else {
                    builder = builder.and("SAVE_TIME", ">=", startTime);
                }
            }

完美解决了问题,搞了我大半天。

问题解决:
1、往数据库里存数据一定要去空格,查询条件也一定要去空格,不然很可能因为这个原因查不到
2、存日期数据,最好存long类型的,方便以后比对查询

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341

推荐阅读更多精彩内容