java.lang.NullPointerException: Attempt to invoke virtual method ‘int android.database.sqlite异常

简介: java.lang.NullPointerException: Attempt to invoke virtual method ‘int android.database.sqlite异常

具体报的错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'int android.database.sqlite.SQLiteDatabase.delete(java.lang.String, java.lang.String, java.lang.String[])' on a null object reference

通过调用数据库中的删除方法,删除下载管理中的声音文件。

但是调试的时候发现BUG,点击声音文件,进到下一个页面之后,再返回本页面,删除该声音文件时就报错误。

之后查找资料才知道,Android sqlite数据库不支持同时读写,如果需要多个一起同时进行读写数据库的话,就需要用多个实例化的mHelper

@Override
    public boolean OnMItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
        try {
          //重写实例化数据库,获得数据库帮助器的实例
            mHelper = UserDownDBHelper.getInstance(this, 1);
            mHelper.openReadLink();
            final UserDown info = userDowns.get(position);
            DialogD dialog = new DialogD(AppsettingDownloadActivity.this);
            dialog.setTitle("删除");
            dialog.setMessage("是否删除" + userDowns.get(position).FileName + "?");
            dialog.setCancel("取消", new DialogD.OnCancelListener() {
                @Override
                public void onCancel(DialogD dialog) {
                }
            });
            dialog.setConfirm("确认", new DialogD.OnConfirmListener() {
                @Override
                public void onConfirm(DialogD dialog) {
                    userDowns.remove(position);
                    mHelper.delete("FileName='" + info.FileName + "'");
                    mAdapter.notifyDataSetChanged();
                }
            });
            dialog.show();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return true;
    }

这样问题解决了,希望能帮助到遇到此问题的网友~


目录
相关文章
|
4天前
|
Java UED
Java中String强转int:一种常见的错误和解决方法
在Java中将非数字字符串转换为整数会导致`NumberFormatException`。要解决这个问题,可以使用`try-catch`捕获异常,正则表达式验证数字格式,或利用异常信息提供错误提示。例如,`Integer.parseInt()`会因遇到非数字字符如`&quot;123abc&quot;`而抛出异常,但通过异常处理或正则`\\d+`可确保安全转换。记得在编程时避免直接强转,以防止程序异常中断。
|
10天前
|
安全 Java 编译器
Android面试题之Java 泛型和Kotlin泛型
**Java泛型是JDK5引入的特性,用于编译时类型检查和安全。泛型擦除会在运行时移除类型参数,用Object或边界类型替换。这导致几个限制:不能直接创建泛型实例,不能使用instanceof,泛型数组与协变冲突,以及在静态上下文中的限制。通配符如<?>用于增强灵活性,<? extends T>只读,<? super T>只写。面试题涉及泛型原理和擦除机制。
16 3
Android面试题之Java 泛型和Kotlin泛型
|
8天前
|
存储 Java 数据库连接
Android Java开发异步
【6月更文挑战第15天】
|
4天前
|
Java 测试技术
Java反射之Method的invoke方法详解
Java反射之Method的invoke方法详解
|
11天前
|
缓存 网络协议 Java
Android面试题之Java网络通信基础知识
Socket是应用与TCP/IP通信的接口,封装了底层细节。网络通信涉及连接、读写数据。BIO是同步阻塞,NIO支持多路复用(如Selector),AIO在某些平台提供异步非阻塞服务。BIO示例中,服务端用固定线程池处理客户端请求,客户端发起连接并读写数据。NIO的关键是Selector监控多个通道的事件,减少线程消耗。书中推荐《Java网络编程》和《UNIX网络编程》。关注公众号AntDream了解更多。
19 2
|
19天前
|
安全 Java Android开发
Kotlin与Java:Android开发的双剑合璧
【6月更文挑战第9天】Kotlin和Java在Android开发中形成互补态势。Java凭借广泛社区支持和丰富的类库资源占据主导,但其语法繁琐和空指针问题限制了发展。Kotlin,设计来解决这些问题,以其简洁、安全、高效的特性逐渐兴起。Kotlin的互操作性允许与Java无缝集成,提升开发效率,减少错误。两者结合提高了代码质量和开发者的灵活性,促进了Android开发社区的繁荣。开发者应把握这种&quot;双剑合璧&quot;,适应技术发展。
33 10
|
5天前
|
Java Android开发 Kotlin
Android面试题:App性能优化之Java和Kotlin常见的数据结构
Java数据结构摘要:ArrayList基于数组,适合查找和修改;LinkedList适合插入删除;HashMap1.8后用数组+链表/红黑树,初始化时预估容量可避免扩容。SparseArray优化查找,ArrayMap减少冲突。 Kotlin优化摘要:Kotlin的List用`listOf/mutableListOf`,Map用`mapOf/mutableMapOf`,支持操作符重载和扩展函数。序列提供懒加载,解构用于遍历Map,扩展函数默认参数增强灵活性。
14 0
|
6天前
|
编译器 开发工具 Android开发
java.io.FileNotFoundException: ...my_flutter/.android/include_flutter.groovy
java.io.FileNotFoundException: ...my_flutter/.android/include_flutter.groovy
11 0
|
9天前
|
SQL Java 关系型数据库
Java JDBC(Java Database Connectivity)
Java JDBC(Java Database Connectivity)
10 0
|
1月前
|
存储 数据库连接 数据库
Android数据存储:解释SQLite数据库在Android中的使用。
Android数据存储:解释SQLite数据库在Android中的使用。
54 0

热门文章

最新文章