Android - 来回传递意图

时间:2015-01-03 19:04:53

标签: android android-intent

我有两项活动:activity_mainactivity_takeapicture。我从activity_main开始一个意图,另一个活动拍照。然后activity_takeapicture将该文件的另一个意图发送回activity_main。在activity_main我应该使用onActivityResult方法来捕获activity_takeapicture发送的意图并随后接收数据吗?以下是在activity_main中发送意图的部分:

    Intent intent = new Intent(this, DisplayResult.class);
    startActivity(intent);

这是' activity_takeapicture`:

Intent intent = new Intent(context, MainActivity.class);
        intent.putExtra(Intent.EXTRA_STREAM, pictureFile);
        startActivity(intent);

编辑:我已经尝试了你们所说的内容,但是当onActivityResult返回意图时,现在activity_takeapicture并未触发。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:0)

你可以这样做,但你必须关闭你打开的所有意图以避免使用内存,当你按下时你不会看到超过9,000个活动xD 它不会避免使用内存,因为它只会在你返回后关闭te Activity。

你也可以使用alnActivityResult,这是更好的解决方案,因为你没有打开太多活动,对你和你的用户来说很简单

答案 1 :(得分:0)

如果activity_takeapicture将图片保存在设备SD卡上,您可以使用以下内容。

intent.putExtra("SavedImageDirectory", filepath); //this will save the file path 

然后在activity_main中,您可以使用

//this will get the file path of the saved image
String ImageDirectory = getIntent().getStringExtra("SavedImageDirectory"); 

//this will decode the filepath into a bitmap 
Bitmap bp = BitmapFactory.decodeFile(ImageDirectory);

//this will display the bitmap on your imageview on the `activity_main`
MyImageView.setImageDrawable(bp);

答案 2 :(得分:0)

试试这个:

在您的班级中初始化静态变量

private static final int CAM_REQUEST = 1;

在按钮侦听器方法

public void onClick(View v){
   Intent takePictureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
   startActivityForResult(takePictureIntent, CAM_REQUEST);
}

然后在您的活动中覆盖此方法:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
   if(requestCode == CAM_REQUEST){
      Bitmap thumbTaken = (Bitmap) data.getExtras().get("data");
      yourImageView.setImageBitmap(thumbTaken);
   }
}

并且不要忘记允许使用CAMERA

希望它有所帮助!!!

答案 3 :(得分:0)

请勿使用startActivity。请改用startActivityForResult