Android
文章平均质量分 77
暗诺星刻
用心写好每一篇博客
展开
-
安卓 onActivityResult 废弃,registerForActivityResult 使用详解
registerForActivityResult 是 Activtity 的一个方法,它可以生成一个对象,该对象的 launch 方法可以启动一次 Activtity 调用流程。该对象可以启动一个 Activtity 并与之绑定,这样,将这个启动的 Activtity 回传时,接收回传数据的代码就无需使用请求码了。可以向 launch 提供一个实参来表示本次 Activtity 调用流程的输入。这个输入可以是任意类型,也可以为 null。// 这里的 this 指向的是一个 Activity。原创 2024-01-11 05:34:10 · 6944 阅读 · 0 评论 -
Maven 和 Gradle 官方文档及相关资料的网址集合
Maven 仓库依赖包官方查询通道:https://mvnrepository.com/Maven 插件官方文档:https://maven.apache.org/plugins/安卓依赖包官方查询通道*:https://maven.google.com/web/Maven 下载安装教程:https://blog.csdn.net/wangpaiblog/article/details/112689500Maven 配置文件 POM 的常用插件配置代码:https://blog.csdn.net/wangp原创 2023-09-06 03:33:49 · 736 阅读 · 0 评论 -
安卓疑难布局问题解决:仿微信对话框中,如何控制对话框的文本自适应且各组件不超出父组件
在安卓组件 XML 布局中,有时候会遇到较复杂的约束关系。比方说,对于下面这个消息对话框中的消息文本,希望它可以文本框大小自适应,且在各组件先后位置确定的情况下,各组件都不超出父组件。限定只能使用 XML 来完成这一功能。如下图所示,当文本只有一行时,文本框的宽度自动调整至正好包裹文本。如下图所示,当文本有多行时,文本框的宽度存在一个最大值,且不会将其它组件挤出屏幕外。文本框的高度则伸长至正好包裹文本。有些读者可能很敏感,没错,这就是高仿微信的消息对话框。当然,实际上的对话框,其左边的背景是白色的,这里为了原创 2023-09-04 00:57:11 · 173 阅读 · 0 评论 -
如何将安卓 Gradle 模块打包发布到本地 Maven 仓库
笔者的运行环境:JDK 17Android 的 Gradle 项目与一般的 Gradle 项目是不同的,因此对将 Gradle 模块打包发布到本地 Maven 仓库来说,对普通 Gradle 项目适用的方法,对 Android 项目是不适用的。因为普通 Gradle 项目打包生成的是 JAR 包,而 Android 项目打包生成的是 AAR 包。不过说到底,AAR 包和 JAR 包一样,也就是一种压缩包。只不过,AAR 包是在 JAR 包的基础之上的二次压缩。原创 2023-08-07 22:10:20 · 2526 阅读 · 5 评论 -
解决 Android Studio 的 Gradle 面板上只有关于测试的 task 的问题
笔者的 Android Studio 的 Gradle 面板上居然除了用于测试的 task 之外,其它什么 task 都没有。解决办法也很简单。这是因为 Android Studio 默认屏蔽了其它 task。开启即可。开启的方法是去掉下面的勾选项。原创 2023-08-05 20:45:00 · 1784 阅读 · 0 评论 -
解决安卓OkHttp报错UnknownServiceException CLEARTEXT communication to not permitted by network security
原来这个报错是因为笔者在调试时使用 OkHttp 发送的是 HTTP 明文请求,因此该请求被安卓阻止。原创 2023-07-21 00:37:16 · 571 阅读 · 0 评论 -
解决Spring报错Content-Type applicationx-www-form-urlencoded;charset=UTF-8 is not supported
这是因为上面使用 OkHttp 发送 POST 请求时,使用的是 FormBody.Builder() 构造的请求体,这样发送的 HTTP 报文的 Content-Type 就会被设置成 application/x-www-form-urlencoded;charset=UTF-8。而后端 Spring MVC 在接收端使用的是 @RequestBody 注解,这样就会只认可值为 application/json 的 Content-Type。因此,Spring Cloud 微服务拒绝了这个请求。原创 2023-07-20 00:41:11 · 2339 阅读 · 0 评论 -
解决安卓OkHttp报错java.net.SocketException socket failed EACCES (Permission denied)
原来这个报错是因为笔者忘记在安卓清单文件中为该应用开启网络权限,因此该请求被安卓阻止。最近笔者在安卓中使用 OkHttp 向本地服务器发送请求的时候,发生了如下报错。开启网络权限的办法也很简单。中使用如下代码即可。原创 2023-07-19 00:10:23 · 1308 阅读 · 0 评论 -
解决 Android Studio 输入点号.后无任何代码提示的问题
但是,笔者不断清除 Android Studio 的缓存,以及反复删除 Android Studio 在用户目录下的各种缓存文件,然后又反复卸载 Android Studio,接着又下载其它版本的 Android Studio,终于发现了原因所在。(英文的句号)后面没有任何 Android Studio 自带的代码提示,但是在其它情况下却有一定几率有代码提示,而且这个时候的代码提示是有时候有,有时候没有。如果这个类没有继承自安卓的类,纯粹是自己自定义的类,代码提示就会有。笔者终于下定决心来解决这个问题。原创 2023-06-12 23:01:06 · 1706 阅读 · 4 评论 -
解决安卓RecyclerView的列表项TextView无法文本选中TextView does not support text selection. Selection cancelled
如果一个含 RecyclerView 的 Activity A 启动了另一个 Activity B,然后再返回到原来那个 Activity A 时,这个 Activity A 中 RecyclerView 中的 TextView 会突然变得无法进行文本选中(RecyclerView 移动滑条时新出现的 TextView 除外)。如果在 RecyclerView 中使用 TextView(或 EditText),则这个 TextView 在某些条件下会突然变得不能文本选中。原来,这是一个安卓已知的 bug。原创 2023-06-11 20:24:57 · 528 阅读 · 0 评论 -
安卓中如何获取状态栏和标题栏的高度
指的是应用实际显示的面积。它不包含状态栏,但包含标题栏。而且,这个值是会随应用显示的面积的改变而改变的。比如,当文本框需要输入时,如果弹出了输入法,则。指的是整个屏幕的尺寸。这个尺寸通常是不会变的,且就是手机厂商对外公布的手机屏幕大小数据。它包含状态栏、标题栏和内容区域。安卓的屏幕显示区域分为三个嵌套的部分,依次为。它不包含状态栏、标题栏。下面给出求这几个尺寸的方法。的高度值会减少输入法的高度。原创 2023-05-08 04:02:08 · 732 阅读 · 0 评论 -
Gradle 模块依赖中,使用 implementation 与 api 的区别
声明的依赖项表示该模块将向其依赖的其他模块公开此依赖项的 API。这意味着其他模块可以使用该依赖项提供的所有公共类和方法,以及该依赖项的传递依赖项提供的所有公共类和方法。声明的依赖项表示该模块将不向其依赖的其他模块公开此依赖项的 API。这意味着该依赖项只对该模块本身可见,并且不会被传递到依赖该模块的其他模块。换句话说**,如果想令本模块能传递性地获得依赖模块的依赖,那么应该在依赖模块的相应依赖中使用关键字。如果项目中有模块 A、B、C、D,且 A 依赖 B、B 依赖 C、C 依赖 D。原创 2023-05-05 01:05:28 · 3499 阅读 · 0 评论 -
安卓中如何获取输入法的高度
如果在当前视图使用了 RecyclerView,则在键盘弹出之后,不是正好出现在光标的下面,而是出现在整个屏幕的下面。但如果没有使用 RecyclerView,则在键盘弹出之后,如果遮住了文本框,会正好出现在光标的下面。在键盘弹出之后,如果键盘会遮住触发键盘的文本框,则系统会将此应用界面向上推动,直到正好能显示出这个文本框。具体来说,其纵坐标都会减少界面向上移动的距离,这个距离最大可为键盘的高度。在键盘弹出之后,计算应用尺寸(不含状态栏)的大小时,系统的 API 会减去键盘的高度。原创 2023-05-04 04:31:52 · 1954 阅读 · 0 评论 -
解决安卓中RecyclerView当一项被点击之后,后面每间隔相同的一段都会有其它项被点击
因此,读者在开发的过程中需要区分,共性数据与个性化数据,视图数据空间与数据库数据空间。问题在于,RecyclerView 在若干项之后,就不再调用 onCreateViewHolder,而是选择直接循环复用缓存中的视图数据,然后调用 onBindViewHolder 来进行初始化。比方说,如果上次使得按钮变色,当滑动到下面的项,然后再滑回来时,前面那个按钮的颜色也会恢复原状。然后后来在若干项之后,并没有创建新的视图 View,而直接循环复用了原来的视图,因此导致视图脏读,从而发生以上的问题。原创 2023-05-01 12:47:10 · 650 阅读 · 0 评论 -
解决Android Studio发生Room在Lombok下报错Cannot find setter for field
因为这个报错只出现在笔者其中一个涉及数据库的模块中,所以不是没有引入 Lombok 依赖的问题。起初,笔者以为是在 Gradle 依赖时,Room 依赖的位置比 Lombok 要靠前,但发现笔者当初早在一开始就把 Lombok 放在了首位,所以也不是这个问题。方法报这个错误,所以 Lombok 实际上还是生效了的。于是笔者不断更换 Lombok 的注解、删除 Lombok 的所有注解、使用手动的。所以对笔者这种情况,只需要删除上面那个 Lombok 注解即可。方法,终于让笔者发现了原因所在。原创 2023-04-27 04:04:27 · 1135 阅读 · 0 评论 -
解决Android Studio测试报错Test events were not received...No tests found for given includes
笔者报错时的运行环境:JDK 17JUnit 5.9.2 或 TestNG 7.7.1单元测试。原创 2023-04-12 02:39:36 · 3069 阅读 · 0 评论 -
解决Android Studio测试报错Could not find method test() for arguments
笔者报错时的运行环境:JDK 17Junit 5.9.2 或 TestNG 7.7.1单元测试。原创 2023-04-10 02:36:06 · 2332 阅读 · 0 评论 -
解决在Android Studio中Lombok不起作用的问题
笔者报错时的运行环境:JDK 17Lombok 插件 0.34-2020.2笔者在刚安装完的 Android Studio 中使用 Lombok 时,发现 Lombok 不起作用。具体遇到的问题有两个:Lombok 的注解在 Android Studio 中报红。本来应该由 Lombok 生成的方法在 Android Studio 中报红。原创 2023-04-03 22:46:19 · 4178 阅读 · 1 评论 -
在安卓中,为什么定义一个内部类 Handler 可能导致内存泄露?
在安卓开发中,如果将Handler作为Activity的成员内部类,那么连思维方式单调的 IDE 都能看出有内存泄露的风险。那么为什么这样做就会有内存泄露的风险呢?为了便于说明,先约定如下图箭头的指向代表 B 是 A 的一个字段。原创 2023-04-02 18:55:18 · 850 阅读 · 1 评论 -
安卓开发的环境配置教程
笔者的环境:Java 17.0.1Gradle 8.0.1Android Studio Electric Eel | 2022.1.1 Patch 1Windows 10 教育版 64位原创 2023-03-24 20:46:20 · 562 阅读 · 0 评论 -
Gradle 的下载安装教程
将含 bin 的 Gradle 安装文件夹放到你喜欢的目录下,并设置 Windows 中的环境变量(在设置 Gradle 的环境变量之前必须完成 JDK 的环境变量。选择合适的下载工具就可以下载了,因为是外国的网站,所以有可能下载缓慢,在百度云离线下载、浏览器内置下载和迅雷中,用迅雷下载的话非常快,所以推荐迅雷。,应该会出现一些配置信息,这说明前面的设置已经成功。按照需要选择 Gradle 其中的一个版本进行下载,这里选择的是。的上一级目录)即为 Gradle 的安装目录。后缀的才是需要下载的。原创 2023-03-11 12:14:35 · 10525 阅读 · 0 评论