我试图打开相机拍摄图像,以字节数组存储,然后在片段上显示图像。
相机正在打开并拍摄照片,但是当您点击勾选时它只会再次显示相机。
我检查了活动结果并且没有被调用。我拥有所有正确的权限设置。
我在这里尝试过其他答案,但没有成功。
以下是我在片段中打开相机的方法:
{{1}}
这是片段中的onActivityResult:
{{1}}
修改
添加requestPermission:
{{1}}
编辑2:
将onActivityResult添加到Main Activity(片段的主机活动)但没有更改:
{{1}}
答案 0 :(得分:0)
如果你在片段中调用openCamera方法,你需要检查这个
答案 1 :(得分:0)
从super
删除onActivityResult()
。
删除此行
super.onActivityResult(requestCode, resultCode, data);
super将继承父类onActivityResult
答案 2 :(得分:0)
您需要更改onActivityResult():
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == AppSettingsDialog.DEFAULT_SETTINGS_REQ_CODE) {
// Do something after user returned from app settings screen
openCamera();
} else if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
Bitmap bmp = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
transactionImageLocationByteArray = stream.toByteArray();
// Load the image into the imageview
Glide.with(getActivity()).asBitmap().load(transactionImageLocationByteArray).into(addTransactionCameraButon);
} else if (resultCode == Activity.RESULT_CANCELED) {
Toast.makeText(getActivity(), "Image Capture Cancelled", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), "Image Capture Failed", Toast.LENGTH_SHORT).show();
}
}
}
修改:将以下代码添加到您的活动的onActivityResult()
方法中。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.yourFragmentId);
fragment.onActivityResult(requestCode, resultCode, data);
}