java.lang.NullPointerException:.Cursor.moveToFirst()'对null对象的引用

时间:2019-08-27 11:43:52

标签: android nullpointerexception cursor attachment

  

java.lang.NullPointerException:尝试调用接口方法   空对象上的'boolean android.database.Cursor.moveToFirst()'   参考

我要附加文件。

可以是任何图片,doc,pdf。

在我的活动中:

String attachmentFile;
    Uri URI = null;
    private static final int PICK_FROM_GALLERY = 101;
    int columnIndex;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.activity_add_notice );

        edBlock.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openFolder();
            }
        }

}

protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        try {
            if (requestCode == PICK_FROM_GALLERY && resultCode == RESULT_OK) {
                Uri selectedImage = data.getData();
                String[] filePathColumn = { MediaStore.Images.Media.DATA };
                Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null);

                 cursor.moveToFirst();
                columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                attachmentFile = cursor.getString(columnIndex);
                Log.e("Attachment Path:", attachmentFile);
                URI = Uri.parse("file://" + attachmentFile);
                cursor.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
            Log.d( "Exception : " , e.getMessage() );
        }
    }

    public void openFolder()
    {
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        intent.putExtra("return-data", true);
        startActivityForResult(Intent.createChooser(intent, "Complete action using"), PICK_FROM_GALLERY);
    }

它在光标所在行的onActivityResult中生成错误。moveToFirst();

1 个答案:

答案 0 :(得分:0)

尝试在移动光标之前获取索引

    protected void onActivityResult(int requestCode, int resultCode, Intent data)
        {
            try {
                if (requestCode == PICK_FROM_GALLERY && resultCode == RESULT_OK) {
                    Uri selectedImage = data.getData();
                    String[] filePathColumn = { MediaStore.Images.Media.DATA };
                    Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null);

                    columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToLast()
                    attachmentFile = cursor.getString(columnIndex);
                    Log.e("Attachment Path:", attachmentFile);
                    URI = Uri.parse("file://" + attachmentFile);
                    cursor.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
                Log.d( "Exception : " , e.getMessage() );
            }
        }