如何在两个活动之间共享数据

时间:2017-01-15 12:49:21

标签: android

我有2个活动。在第一个活动中有一个叫做拍照的按钮,当我点击它我的应用程序使用Android手机的相机意图。但我想要在第二个活动的图像视图中捕获的图像我该怎么办?它?

这里bt1是MainActivity_Lens中的按钮。 cameraActivity是第二个活动。

  public class MainActivity_Lens extends AppCompatActivity {

  Button bt1;
    public static final int req=1;


    public void init(){
        bt1=(Button)findViewById(R.id.takephoto);
        bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent camera=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(camera,req);

//                Intent cameraview =new Intent(MainActivity_Lens.this,cameraActivity.class);
//                startActivity(cameraview);
            }
            protected void onActivityResult(int requestcode,int resultcode,Intent data){
                if(requestcode==req && resultcode==RESULT_OK){
                    Bundle extras=data.getExtras();
                    Bitmap photoCapturedBitmap =(Bitmap) extras.get("data");
                    Intent cameraview =new Intent(MainActivity_Lens.this,cameraActivity.class);
                    startActivity(cameraview);
                }
            }
        });
    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main_activity__lens);
        init();
    }



}

1 个答案:

答案 0 :(得分:0)

Bitmap使用:

之间传递图片activity

宣告:

byte[] bytesImage ;

将位图转换为字节数组:

ByteArrayOutputStream ba = new ByteArrayOutputStream();
//bitmap is the bitmap you received in onActivityResult()
bitmap.compress(Bitmap.CompressFormat.PNG, 50, ba);
//save the image byte array
bytesImage = ba.toByteArray();

现在将其传递给其他活动;

Intent i = new Intent(MainActivity_Lens.this, cameraActivity.class);
i.putExtra("byteArray", bytesImage);
startActivity(i);

使用;

在第二次活动中接收它
byte[] byteArray = getIntent().getByteArrayExtra("byteArray");
    if (byteArray != null) {
        Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
        imageview.setImageBitmap(bmp);//set bitmap to imageview
    }