java.lang.NullPointerException:尝试在空对象引用上调用接口方法'boolean android.database.Cursor.moveToFirst()' [英] java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.database.Cursor.moveToFirst()' on a null object reference

查看:268
本文介绍了java.lang.NullPointerException:尝试在空对象引用上调用接口方法'boolean android.database.Cursor.moveToFirst()'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在创建一个列出手机中所有图像的应用程序,并且正在使用媒体内容提供程序来执行此操作.我的问题是无论我在哪里运行,我总是在我的应用程序中收到此错误.

I'm creating an app that list all images in my phone and I'm using media content provider to do it. my problem is I always get this error in my app wherever i run it.

08-28 00:31:27.001 16706-16706/com.chill.leoj.burp E/AndroidRuntime: FATAL EXCEPTION: main
                                                                 Process: com.chill.leoj.burp, PID: 16706
                                                                 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.chill.leoj.burp/com.chill.leoj.burp.Photos}: java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.database.Cursor.moveToFirst()' on a null object reference
                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2521)
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2601)
                                                                     at android.app.ActivityThread.access$800(ActivityThread.java:178)
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)
                                                                     at android.os.Handler.dispatchMessage(Handler.java:111)
                                                                     at android.os.Looper.loop(Looper.java:194)
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5637)
                                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                                     at java.lang.reflect.Method.invoke(Method.java:372)
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
                                                                  Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.database.Cursor.moveToFirst()' on a null object reference
                                                                     at com.chill.leoj.burp.Photos.onCreate(Photos.java:159)
                                                                     at android.app.Activity.performCreate(Activity.java:6100)
                                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1112)
                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2468)
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2601) 
                                                                     at android.app.ActivityThread.access$800(ActivityThread.java:178) 
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470) 
                                                                     at android.os.Handler.dispatchMessage(Handler.java:111) 
                                                                     at android.os.Looper.loop(Looper.java:194) 
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5637) 
                                                                     at java.lang.reflect.Method.invoke(Native Method) 
                                                                     at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960) 
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 

Photos.java:159

Photos.java:159

  if (thumbCursor.moveToFirst()) {
                newVVI.thumbPath = thumbCursor.getString(thumbCursor
                        .getColumnIndex(MediaStore.Images.Thumbnails.DATA));
                Log.v("", newVVI.thumbPath);
            }

pls您能帮我解决这个问题吗?预先谢谢你!

pls can you help me to solve this. Thank you in advance!

这是我的代码:

  Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;

    Uri uri1 = MediaStore.Images.Thumbnails.getContentUri("external");

    String[] thumbColumns = { MediaStore.Images.Thumbnails.DATA,
            MediaStore.Images.Thumbnails.IMAGE_ID };

    String[] mediaColumns = { MediaStore.Images.Media._ID,
            MediaStore.Video.Media.DATA, MediaStore.Images.Media.TITLE,
            MediaStore.Images.Media.MIME_TYPE };


Cursor cursor = getContentResolver().query(uri,
        mediaColumns, null, null, null);



    if (cursor.moveToFirst()) {
        do {

            ImageViewInfo newVVI = new ImageViewInfo();
            int id = cursor.getInt(cursor.getColumnIndex(MediaStore.Images.Media._ID));
            Cursor thumbCursor = getContentResolver().query(uri1, thumbColumns, MediaStore.Images.Thumbnails.IMAGE_ID
                    + "=" + id, null, null);
            if (thumbCursor.moveToFirst()) {
                newVVI.thumbPath = thumbCursor.getString(thumbCursor
                        .getColumnIndex(MediaStore.Images.Thumbnails.DATA));
                Log.v("", newVVI.thumbPath);
            }

            newVVI.filePath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));
            newVVI.title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.TITLE));
            Log.v("", newVVI.title);
            newVVI.mimeType = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.MIME_TYPE));
            Log.v("", newVVI.mimeType);
            ImageRows.add(newVVI);
        } while (cursor.moveToNext());


        cursor.close();
        ImageAdapter = new ImageGalleryAdapter(Photos.this, ImageRows);

    }
    listView.setAdapter(new ImageGalleryAdapter(this, ImageRows));

我忘了告诉我我也尝试这本书上写的内容链接并自己​​调试,但是什么也没有发生,我不知道我是否做对了.

I forgot to tell I also try what is written on this link and debug it by myself but nothing really happens and i dont know if I'm doing it right.

推荐答案

尝试一下

if(thumbCursor.moveToFirst()!=空&&(thumbCursor.moveToFirst())

if (thumbCursor.moveToFirst()) {
                newVVI.thumbPath = thumbCursor.getString(thumbCursor
                        .getColumnIndex(MediaStore.Images.Thumbnails.DATA));
                Log.v("", newVVI.thumbPath);
            }

if(Cursor.moveToFirst()!= null&&(Cursor.moveToFirst())

if (cursor.moveToFirst()) {
        do {

            ImageViewInfo newVVI = new ImageViewInfo();
            int id = cursor.getInt(cursor.getColumnIndex(MediaStore.Images.Media._ID));
            Cursor thumbCursor = getContentResolver().query(uri1, thumbColumns, MediaStore.Images.Thumbnails.IMAGE_ID
                    + "=" + id, null, null);
            if (thumbCursor.moveToFirst()) {
                newVVI.thumbPath = thumbCursor.getString(thumbCursor
                        .getColumnIndex(MediaStore.Images.Thumbnails.DATA));
                Log.v("", newVVI.thumbPath);
            }

这篇关于java.lang.NullPointerException:尝试在空对象引用上调用接口方法'boolean android.database.Cursor.moveToFirst()'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆