Java获取imageview显示效果,从图库中选择图像并在ImageView中显示?

我正在开发一个应用程序,要求用户从库中选择一张照片并将其设置为 Profiles 图片 . 现在,以下代码在大多数设备上都能正常工作(我已经检查了摩托罗拉Moto G,One plus X,MI 4i和其他一些设备) . 每当我在redmi prime上运行它时,它会给出一个错误,如下所示:

堆栈跟踪

进程:com.example.lordvoldemort.imagepicker,PID:23291 java.lang.RuntimeException:传递结果失败ResultInfo {who = null,request = 1,result = -1,data = Intent {dat = file:/// storage /emulated/0/DCIM/Camera/IMG_20160807_003845_HDR.jpg typ = image / jpeg}} to activity {com.example.lordvoldemort.imagepicker / com.example.lordvoldemort.imagepicker.MainActivity}:java.lang.NullPointerException:尝试调用在android.app.ActivityThread.handleSendResult(ActivityThread.java:3638)的android.app.ActivityThread.deliverResults(ActivityThread.java:3595)上的空对象引用上的接口方法'boolean android.database.Cursor.moveToFirst()'at android.app.ActivityThread.access $ 1300(ActivityThread.java:154)在Android.app.Handler.dispatchMessage(Handler.java:102)的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1366) . os.Looper.loop(Looper.java:135)在android.app.ActivityThread.main(ActivityThread.java:5290)java.lang.reflect.Method.invoke(Native Method)在java.lang.reflect.Method.invoke(Method.java:372)的com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:908)at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:703)引起:java.lang.NullPointerException:尝试在com.example.lordvoldemort.imagepicker.MainActivity.onActivityResult上的空对象引用上调用接口方法'boolean android.database.Cursor.moveToFirst()' (MainActivity.java:104)在Android.app.ActivityThread.deleverResult(ActivityThread.java:3591)的android.app.ActivityThread.handleSendResult(ActivityThread.java:)中的android.app.Activity.dispatchActivityResult(Activity.java:6241) 3638)在Android.app.Handler.dispatchMessage(Handler.java:102)的android.app.ActivityThread.access $ 1300(ActivityThread.java:154)android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1366)在android.os.Looper.loop(Looper.java:135)的android.app.ActivityThread.main(ActivityThread.java:5290)java.lang.reflect.Method.invoke(Native Me)在com.android.internal.os.ZygoteInit的com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:908)的java.lang.reflect.Method.invoke(Method.java:372)上 . . 主要(ZygoteInit.java:703)

我在ActivityResult上使用的代码 -

Uri selectedImage = data.getData();

String[] filePathColumn = { MediaStore.Images.Media.DATA };

Cursor cursor = getContentResolver()

.query(selectedImage, filePathColumn, null,

null, null);

assert cursor != null;

cursor.moveToFirst();

int columnIndex = cursor

.getColumnIndex(filePathColumn[0]);

String filePath = cursor.getString(columnIndex);

cursor.close();

newbitmap = BitmapFactory.decodeFile(filePath);

ImageView ivImage = (ImageView)findViewById(R.id.image);

ivImage.setImageBitmap(newbitmap);

public String getPathFromURI(Uri contentUri) {

String res = null;

String[] proj = {MediaStore.Images.Media.DATA};

Cursor cursor = getContentResolver().query(contentUri, proj, null, null, null);

if (cursor.moveToFirst()) {

int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

res = cursor.getString(column_index);

}

cursor.close();

return res;

}

错误是 - 尝试在空对象引用上调用接口方法'boolean android.database.Cursor.moveToFirst()'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值