我想从图库中选择一个图像并在下一个活动中显示相同的图像。在实施时,不会保留任何图像。
这是我的代码: 活动1:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button bot=(Button)this.findViewById(R.id.buk1);
bot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);//
//startActivity(intent);
startActivityForResult(Intent.createChooser(intent, "Select Picture"),10);
}
});
}
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
Bitmap selectedphoto = null;
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SELECT_PICTURE && resultCode == RESULT_OK && null != data)
{
Uri selectedImage = data.getData();
String [] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
selectedphoto = BitmapFactory.decodeFile(filePath);
cursor.close();
Intent i = new Intent (MainAct.this,gal.class);
i.putExtra("data",selectedphoto);
startActivity(i);
}
}
活动2:
public class gal extends Activity{
ImageView view = (ImageView) findViewById(R.id.imger);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.galr);
Bitmap selectedphoto =(Bitmap)this.getIntent().getParcelableExtra("data");
view.setImageBitmap(selectedphoto);
}
}
答案 0 :(得分:1)
ArrayList<Bitmap>
。 Intent
的附加内容中。 答案 1 :(得分:0)
通过意图传递位图可能非常广泛,因此传递路径并再次解码
以这种方式试试 -
Intent i = new Intent (MainAct.this,gal.class);
i.putExtra("data",filePath);
startActivity(i);
gal活动中的获取路径并再次解码位图。
答案 2 :(得分:0)
不是将位图传递给ShowImage活动,而是传递您的URI,然后在ShowImage活动中检索实际位图,就像现在在PictureOptions活动中一样。
intent.setData( uri );
在ShowImage活动中执行:
URI imageUri = getIntent().getData();