我想使用文件路径显示图像。
/mnt/sdcard/DCIM/Camera/IMG_20140524_150944.jpg
这是布局文件。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/item_single_new"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="10dip"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"/>
</LinearLayout>
这是我正在使用的代码。
package com.bridge.bridgeinventory;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.util.Log;
import android.widget.ImageView;
import android.widget.Toast;
public class SingleImage extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.single_image);
ImageView image = (ImageView)
findViewById(R.id.item_single_new);
image.setAdjustViewBounds(true);
image.setMaxHeight(100);
image.setMaxWidth(100);
image.setScaleType(ImageView.ScaleType.CENTER_CROP);
Intent i=getIntent();
String myimage =i.getStringExtra("photo").trim();
Log.e("image path", myimage);
Bitmap m= BitmapFactory.decodeFile(myimage);
if(m==null)
{
Toast.makeText(getApplicationContext(), "Image was deleted", Toast.LENGTH_LONG).show();
}
image.setImageBitmap(m);
}
}
意图extral打印正确(如上所示),但图像不显示。
我只看到黑色补丁而不是图像。
我缺少什么简单的东西?
这应该是简单的事情,但它完全打败了我!
罗纳德
这就是我如何获得存储在db中的路径。
public void GetPhoto(View v)
{
Intent picintent= new Intent(Intent.ACTION_PICK);
picintent.setType("image/*");
startActivityForResult(picintent,GET_PHOTO);
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent resultData) {
super.onActivityResult(requestCode, resultCode, resultData);
if(requestCode==GET_PHOTO){
if (resultData != null) {
String[] projection = { MediaStore.Images.Media.DATA };
@SuppressWarnings("deprecation")
Cursor cursor = managedQuery(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
projection, null, null, null);
int column_index_data = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToLast();
String imagePath = cursor.getString(column_index_data);
cursor.close();
bridgephoto=imagePath;
Log.e("imagepath", bridgephoto);
}
}
}
bridgephoto变量是一个类级变量 从意图中获得后,我用它来设置照片属性,如下所示。
bridge.setBridgePhoto(bridgephoto);
然后我有一个显示桥梁的列表视图。它有一个上下文菜单,可以显示桥照片。
以下是照片菜单项
的代码@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
// TODO Auto-generated method stub
int menuItemIndex = item.getItemId();
String menuItemName =menuitems[menuItemIndex];
final AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item
.getMenuInfo();
final int pos = menuInfo.position;
if(menuItemName=="Photo")
{
Bridge b= (Bridge)ba.getItem(pos);
String image=b.getBridgePhoto();
/// put it in an intent!
Intent i= new Intent(Bridges.this,SingleImage.class);
i.putExtra("photo",image);
startActivity(i);
}
return super.onMenuItemSelected(featureId, item);
}
传递给SingleImage活动的是字符串extral。
但我已经使用Log.e来测试字符串(图像路径),看起来是正确的。