Android将uri保存到数据库,然后再使用它

时间:2016-08-16 21:59:20

标签: android image sqlite uri

我有两个活动,第二个是您输入数据并选择图像,第一个或主要活动是显示数据的位置。图像选择器的代码如下所示:

imagePicker.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(intent, "Image Selector"), 1);
        }
    });

然后在onActivityResult方法中处理数据

Uri uri = data.getData();
imagePicker.setImageURI(uri);
imageUri = uri.toString();

imagePicker的图像集用于向用户显示响应,imageUri是全局String变量。当用户填写表单并按下添加按钮时,imageUri String和一些其他变量将插入到数据库表的一行中。此活动关闭并在主要活动onResume方法内部检索数据,并且数据库表的每一行等于列表视图中的项目。

由于我有自定义列表视图项布局,因此我使用了自定义数组适配器。在适配器中,imageUri String变量变为object.getImage()。

if(!object.getImage().equals("")) {
    imageView.setImageUri(Uri.parse(object.getImage()));
}

我检查它是否有值,因为用户不需要图像,因此会显示标准图像。如果他们选择了图像,则会从uri字符串中设置图像uri。这是我的问题,因为当它运行图像所在的区域是空白时我得到错误:

resolveUri failed on bad bitmap uri: content://com.android.providers.media.documents/document/image%3A29948

我倾向于认为这是错误和列表视图的组合,因为在表单活动完成并关闭之后,项目在列表视图中可见而不滚动图像是它的意思但是,只要我打开另一个活动或再次打开应用程序,它们就会变成空白。即使图像显示,我相信我仍然得到相同的错误消息存储

0 个答案:

没有答案