将所选图像从库保留到android中的新活动

时间:2014-03-03 06:43:22

标签: android image

我想从图库中选择一个图像并在下一个活动中显示相同的图像。在实施时,不会保留任何图像。

这是我的代码: 活动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);
    }

}

3 个答案:

答案 0 :(得分:1)

  1. 获取所选图像。
  2. 将它们放入ArrayList<Bitmap>
  3. 将其添加到Intent的附加内容中。
  4. 检索下一个活动。

答案 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();