我有两项活动:activity_main
和activity_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
并未触发。我该如何解决这个问题?
答案 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
。