Android Cursor空指针的问题
最近几天无聊自己动手写个音乐播放器,用到Cursor来取得数据库中音乐文件的信息,但是当用到Cursor的时候总是报空指针错误,后来发现是模拟器上没有音乐文件,使用Cursor的时候 ,若Cursor中没有结果,则Cursor的对象则为空,所以在使用Cursor的时候最好先判断Cursor对象是否为空且其结果是否大于等于1,以下是最开始的代码:
private void getSongMessage(){
String TITLE = MediaStore.Audio.Media.TITLE;
String DATA = MediaStore.Audio.Media.DATA;
String ALBUM = MediaStore.Audio.Media.ALBUM;
String ARTIST = MediaStore.Audio.Media.ARTIST;
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
ContentResolver cr = getContentResolver();
Cursor cs = cr.query(uri, null, null, null, null); while (cs.moveToNext()) {
String title = cs.getString(cs.getColumnIndex(TITLE));
String data = cs.getString(cs.getColumnIndex(DATA));
String album = cs.getString(cs.getColumnIndex(ALBUM));
String artist = cs.getString(cs.getColumnIndex(ARTIST));
MusicData.title.add(title);
MusicData.data.add(data);
MusicData.album.add(album);
MusicData.artist.add(artist);
}
}
以下 是修改后的代码:
private void getSongMessage(){
String TITLE = MediaStore.Audio.Media.TITLE;
String DATA = MediaStore.Audio.Media.DATA;
String ALBUM = MediaStore.Audio.Media.ALBUM;
String ARTIST = MediaStore.Audio.Media.ARTIST;
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
ContentResolver cr = getContentResolver();
Cursor cs = cr.query(uri, null, null, null, null);
if(cs != null && cs.getCount() >= ){
while (cs.moveToNext()) {
String title = cs.getString(cs.getColumnIndex(TITLE));
String data = cs.getString(cs.getColumnIndex(DATA));
String album = cs.getString(cs.getColumnIndex(ALBUM));
String artist = cs.getString(cs.getColumnIndex(ARTIST));
MusicData.title.add(title);
MusicData.data.add(data);
MusicData.album.add(album);
MusicData.artist.add(artist);
}
}else{
Toast.makeText(this, "No Data", Toast.LENGTH_LONG).show();
}
}
Android Cursor空指针的问题的更多相关文章
- [Android Pro] 完美Android Cursor使用例子(Android数据库操作)
reference to : http://www.ablanxue.com/prone_10575_1.html 完美 Android Cursor使用例子(Android数据库操作),Androi ...
- Android Cursor类的概念和用法
http://www.2cto.com/kf/201109/103163.html 关于 Cursor 在你理解和使用 Android Cursor 的时候你必须先知道关于 Cursor 的几件事情: ...
- 单独谈谈 Android Cursor 的使用细节
使用过 SQLite 数据库对 Cursor 应该不陌生,这里单独拿出来谈一下,加深对Android SQLite中使用 Cursor 的理解. 在你理解和使用 Android Cursor 的时候你 ...
- 如何检测 Android Cursor 泄漏
简介: 本文介绍如何在 Android 检测 Cursor 泄漏的原理以及使用方法,还指出几种常见的出错示例.有一些泄漏在代码中难以察觉,但程序长时间运行后必然会出现异常.同时该方法同样适合于其他需要 ...
- Android Cursor浅析
1. 本文目的 Android ContentProvider提供了进程间数据交换的一种机制.而数据库的查询就是这样的机制的应用.那么app通过Uri查询数据库而得到的Cursor到底是个什么东西?为 ...
- Android笔记——关于Cursor类的介绍
使用过 SQLite数据库的童鞋对 Cursor 应该不陌生,加深自己和大家对Android 中使用 Cursor 的理解. 关于 Cursor 在你理解和使用 Android Cursor 的时候你 ...
- Android中Cursor(游标)类的概念和用法
使用过 SQLite 数据库的童鞋对 Cursor 应该不陌生,如果你是搞.net 开发你大可以把Cursor理解成 Ado.net 中的数据集合相当于dataReader.今天特地将它单独拿出来谈, ...
- android中的Cursor类
转载: 使用过 SQLite 数据库的童鞋对 Cursor 应该不陌生,如果你是搞.net 开发你大可以把Cursor理解成 Ado.net 中的数据集合相当于dataReader.今天特地将它单独拿 ...
- Android中Cursor类的概念和用法
http://blog.sina.com.cn/s/blog_618199e60101fskp.html 使用过 SQLite数据库的童鞋对 Cursor 应该不陌生,加深自己和大家对Android ...
随机推荐
- 【转】Linux Framebuffer
全面的framebuffer详解 一.FrameBuffer的原理 FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口. Linux是工作在保护模式下,所以用户态进程是无法象D ...
- 创建SQL数据库指定文件路径
create database b2c on primary -- 默认就属于primary文件组,可省略(/*--数据文件的具体描述--*/ name='b2c', -- 主数据文件的逻 ...
- Docs list
http://www.deansys.com/doc/ldd3/index.html Github中文文档: http://www.worldhello.net/gotgithub/03-projec ...
- 菜鸟学习Struts——简易计算器
这是学习Struts的一个简单的例子文件结构如下: 1.配置Struts环境 2.新建input.jsp,success.jsp,error.jsp input.jsp代码如下: <%@ pag ...
- 我的cnblogs设置代码
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- Java 基础学习1 -- 基础语法
1.变量
- OC的类的构造方法
构造方法:用来初始化对象的:首先分解一下创建对象的过程: Person *p = [Person new]; // new方法是alloc 和 init 这两个方法的组合: 完整的创建可用对象的过程: ...
- [搜片神器]winform程序自己如何更新自己的方法代码
DHT抓取程序开源地址:https://github.com/h31h31/H31DHTDEMO 数据处理程序开源地址:https://github.com/h31h31/H31DHTMgr 国外测试 ...
- 针对谷歌默认最小字体12px的正确解决方案 (css、html)
今天晨会,产品要求把以前12px的字体改小一点,我心想这有什么难的,就随口答应了.哪知,改css的时候,谷歌浏览器中font-size小于12px时,字体就不会再缩小了.当时我的第一反应就是会不会是其 ...
- 2013 Asia Regional Changchun
Hard Code http://acm.hdu.edu.cn/showproblem.php?pid=4813 #include<cstdio> ]; int main(){ int t ...