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

147 阅读2分钟

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

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

Q: RecyclerView中如何将某一个项目的位置置顶?

A: 满足置顶条件后,可以首先将当前位置的项目从列表中移出,然后再将其添加至列表的头部,这样即可实现置顶的效果。

Q: 如何重新加载一个Activity?

A: 使用recreate()方法可以实现。

Q: 既然只是签名不同,为什么要区分debug.keystore和release.keystore?

A:签名可以标识开发者的身份,而Debug的签名alias和密码都是默认的,所以在公开发布的应用程序中不应该使用debug签名,debug签名只是专门供开发测试使用。此外,如果使用尝试通过debug签名发布App,是不能通过Google Play市场审核的。

Q: 如何更改按钮的颜色?

A: 添加android:backgroundTint属性即可。

Q: findViewById返回空

A: 反复查找后发现xml ID命名不规范,导致写代码的时候一直以为没写错,产生了混淆情况。今后应该注意xml ID命名时应该避免混淆。

Q: 为什么Android Studio中有时.kt的扩展名会出现,而有的时候则不出现?

A: 当kotlin文件只有一个outer class/object/interface并且和文件名相同时,Android Studio就不会显示.kt扩展名,随后检查发现我在一个文件中包含了data class,将其分别提取出来后,.kt扩展名不再出现。

Q: 使用WebView的过程中,如今有很多网站会使用自己的URL协议并在自家App中注册,而WebView本身不支持这些协议,那么当用户点击含有这些协议的链接时,该WebView就会报错为ERR_UNKNOWN_URL_SCHEME,如何解决这一问题?

A: WebView提供了一个shouldOverrideUrlLoading方法,重写这个方法,判断URL是否以http或https开头,如果为是,说明是普通可被WebView打开的方法,这时不需要处理,返回false即可,此时的URL会继续正常加载;而如果不是,则返回true说明应该停止这个URL的加载,同时可以创建一个Intent,看看用户的设备中是否存在可以响应该URL的App,如果有利用Intent尝试跳转到该App即可。