项目实践遇到的问题及解决(1) | 青训营笔记

111 阅读2分钟

这是我参与「第四届青训营」笔记创作活动的第11天。

本篇笔记记录项目实践中遇到的问题。

1、创建项目,使用navigation + Fragment布局,运行时发现navigation下方有多余空白

反复查找没有找到这部分空白的来源,后来发现activity_main.xml里面有android:paddingTop属性,将该属性删除,问题解决。

2、Gson解析与Kotlin空安全

项目使用了Gson做Json解析,项目使用RecyclerView做列表,适配器设置各字段均为非空类型。但程序运行时却崩溃,查看异常信息发现是空指针异常。进一步调查接口返回部分字段有时返回为null,此时会导致空指针异常。

解决:暂时简单将adapter的data class有可能为空的字段设置为可空类型。

尽管问题暂时解决,但对问题发生的原因较为疑惑,进一步了解问题原因及更高级的解决方法,可参阅juejin.cn/post/699548…及链接文章文末的参考文章,这几篇文章对原理有详细描述,并给出了解决办法。  

3、OkHttp在OnResponse中拿到的数据无法赋值给本地变量,在OnResponse外变量仍然为null

这一问题是因为OkHttp是异步执行的。项目实践中使用了传参的方法简单地解决了这个问题,其他处理异步请求的方法也适用,比如回调。

4、字符串拼接出现警告

字符串拼接时,警告Do not concatenate test displayed with setText. Use resource string with placeholders.

解决:这个警告的含义是,通过setText设置文本时不推荐使用字符串拼接的方式。在res/string.xml里将所需字符串以资源形式存储,同时以占位符的方式表示此处应为占位的内容,如%s表示字符串。详情请参考Android官方文档:developer.android.com/guide/topic…

5、List toString()出现[]

解决:利用TextUtils.join()来代替。第一个参数是分隔符,第二个参数是该List。

6、利用Android Studio Push到GitHub停留在Pushing…一直不结束

观察控制台发现已经报错Invocation failed:Unexpected end of file from serverjava.lang.RuntimeException。检查非网络问题,随后确认账号认证问题。

利用 git remote set-url origin https://<your_token>@github.com/<USERNAME>/<REPO>.git重新设置Token,再次尝试push操作,问题解决。