我的应用程序有一个插入活动,它有一个图像选择器,其中的Uri存储为一个准备放入数据库的字符串。
<login-config>
imageUri是一个字符串,然后在按下按钮后放入数据库中。
一旦所有内容都插入到数据库中,活动就会返回主活动,在public void onActivityResult(int reqCode, int resCode, Intent data) {
if(resCode == RESULT_OK) {
if(reqCode == 1) {
imageUri = data.getData().toString();
}
}
}
方法中,在对象列表中检索数据库/表中的所有数据,然后将这些数据放入自定义数组中适配器以形成我的列表视图。
onResume
这是在数组适配器中设置图像的方式。奇怪的是,在插入活动关闭后,图像立即可见,但只要我打开另一个活动并返回图像就是空白。我收到了错误
if(!uriString.equals("")) {
image.setImageURI(Uri.parse(uriString));
}
我不知道为什么它无法解决,因为它可以开始,但它不起作用。
答案 0 :(得分:0)
内容URI需要正确解析,因为它们不像普通的filePath,因此我们需要一些解析器。以下是如何解决此问题的示例:
对代码的更改
if(!uriString.equals("")) {
image.setImageURI(Uri.parse(getPathFromURI(<your app context>, Uri.parse("content://blah/blah/blah"))));
}
URI解析器的方法定义。
public String getPathFromURI(Context context, Uri contentUri) {
Cursor mediaCursor = null;
try {
String[] dataPath = { MediaStore.Images.Media.DATA };
mediaCursor = context.getContentResolver().query(contentUri, dataPath, null, null, null);
int column_index = mediaCursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
mediaCursor.moveToFirst();
return mediaCursor.getString(column_index);
} finally {
if (mediaCursor != null) {
mediaCursor.close();
}
}
}