Android开发过程中的坑及解决方法收录(六)

简介: Android开发过程中的坑及解决方法收录(六)file.listFiles 空指针异常最近在弄个小项目,类似一个文件管理器,需要获得手机存储里的目录之后显示,但是运行过程中出现错误,搜索了资料,得出了以下的解决办法问题产生的原因:android6.

Android开发过程中的坑及解决方法收录(六)

  1. file.listFiles 空指针异常
    最近在弄个小项目,类似一个文件管理器,需要获得手机存储里的目录之后显示,但是运行过程中出现错误,搜索了资料,得出了以下的解决办法

问题产生的原因:

android6.0以上需要动态申请权限,确保自己有读取和写入SD卡的权限
以往版本的话,写入SD卡的权限其实是包含了读取SD卡的权限,但是android6.0有所改变,所以得声明读取和写入SD卡的权限,两个权限
存在有隐藏文件,在获取列表的时候出现空指针问题
解决方法:
针对第三个问题,我们只需要添加一个判断当前的数组是否为空即可

java.io.File[] childFiles = file.listFiles(new FileFilter() {

        @Override
        public boolean accept(java.io.File pathname) {
            return pathname.isDirectory() || pathname.getName().endsWith(".apk");//筛选文件夹和apk文件,统计为项目数
        }
    });

    if (childFiles != null) {
        if (childFiles.length == 0) {
            count = "0项";
        } else {
            for (int i = 0; i < childFiles.length; i++) {
                childFilesList.add(new File(childFiles[i].getPath()));
            }
            count = childFiles.length+"项";
        }
    }
  1. fragment覆盖问题
    问题产生原因:

Fragment默认的背景是透明的
解决方法:
把Fragment的背景统一设置为某个颜色即可解决

  1. RecyclerView的复用导致图标错乱
    还是之前的那个文件管理器项目遇到的问题,如果是文件夹,则显示文件夹的图标,如果是apk安装包,则显示apk图标。

一个文件夹里面有N个文件夹,有几个是apk文件,滑到底,可以看到apk文件显示apk图标,但是,向上滑动,有几个文件夹的图标变成了apk的图标

if (bean.isFile()) {

       //如果为文件,则设置图标为apk图标
        ImageView imageView = holder.getView(R.id.img_folder);
        imageView.setImageDrawable(getApkIcon(holder, bean.getPath()));
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);

        holder.setViewGone(R.id.img_right);
    }

原因:
好像是因为RecyclerView有四层缓存,巴拉巴拉..
解决方法:
由于我们是在onBindViewHolder里面进行绘制每一个item的界面,但是,我们只有一个if语句,
使用if判断条件,之后需要修改某个控件,我们需要补充else语句,不满足条件的则设置控件为原来的样子,也就是显示文件夹图标

if (bean.isFile()) {

       //如果为文件,则设置图标为apk图标
        ImageView imageView = holder.getView(R.id.img_folder);
        imageView.setImageDrawable(getApkIcon(holder, bean.getPath()));
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);

        holder.setViewGone(R.id.img_right);
    } else {
        //如果不是的话,设置图标为文件夹图标
        ImageView imageView = holder.getView(R.id.img_folder);
        imageView.setImageResource(R.drawable.vector_drawable_folder);
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);

    }
  1. RecyclerView中的checkbox的选择状态错乱问题
    每个item中包含着一个checkbox,之后点击了某个item的checkbox,使其变成了选择状态,和上面的例子类似,当我们往下滑动的时候,会出现几个item的checkbox也变成了选择状态的情况

解决办法:
在onBindViewHolder方法里面给checkbox设置一个click监听器,之后补上相关的逻辑代码,如点击之后要取消选择状态..
原文地址https://www.cnblogs.com/kexing/p/10661916.html

相关文章
|
6月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1169 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
6月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
909 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
6月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1049 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
7月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
823 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
6月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
340 0
|
7月前
|
Java 开发工具 Maven
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
968 6
|
9月前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
615 11
|
9月前
|
移动开发 Java 编译器
Kotlin与Jetpack Compose:Android开发生态的演进与架构思考
本文从资深Android工程师视角深入分析Kotlin与Jetpack Compose在Android系统中的技术定位。Kotlin通过空安全、协程等特性解决了Java在移动开发中的痛点,成为Android官方首选语言。Jetpack Compose则引入声明式UI范式,通过重组机制实现高效UI更新。两者结合不仅提升开发效率,更为跨平台战略和现代架构模式提供技术基础,代表了Android开发生态的根本性演进。
400 0
|
11月前
|
搜索推荐 Android开发 开发者
Android星级评分条RatingBar样式的改变及出现问题的解决方法
本文介绍了自定义 RatingBar 的实现方法,通过布局文件、layer-list 样式文件和 style 文件的配置完成个性化星星评分效果。关键步骤包括:1) 在布局文件中添加 RatingBar 并引用样式;2) 创建 layer-list 文件定义背景、次级进度和进度图片;3) 在 style 文件中定义 RatingBar 样式并应用到布局中。可能出现的问题及解决办法:直接报错通常是图片素材过大,调整尺寸即可;星星流眼泪是图片形状问题,需将图片置于透明圆形或正方形内重新组合。附有具体代码示例,方便开发者快速上手实现自定义评分组件。
463 12
|
10月前
|
安全 Java Android开发
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
460 0
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡

热门文章

最新文章