我有一个应用程序,我正在拍摄一个活动(除其他外)。
现在,当我按下按钮拍摄照片时,它会打开相机。如果我按下后退按钮或取消按钮(不拍照),它会崩溃并给出
空指针
和
未能提供结果ResultInfo
在这一行:
Bitmap photo = (Bitmap) data.getExtras().get("data");
我用:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == CAMERA_REQUEST){
Bitmap photo = (Bitmap) data.getExtras().get("data");
imageView.setImageBitmap(photo);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.PNG, 100, stream);
blobvalue = stream.toByteArray();
Bundle extras = new Bundle();
Intent k=new Intent(this,MainActivity.class);
extras.putParcelable("Bitmap", photo);
k.putExtras(extras);
}
if (requestCode == RESULT_CANCELED) {
}
}
并在我的适配器中:
ImageView myImage=(ImageView) convertView.findViewById(R.id.myimage);
final Bitmap image;
if(theItems.getImagemyItems() != null)
{
byte []temp = theItems.getImagemyItems();
image = BitmapFactory.decodeByteArray(temp, 0, temp.length);
myImage.setImageBitmap(image);
}
else
{
image = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher);
myImage.setImageBitmap(image);
}
据我记忆,以上用于此目的。 我不知道还能做什么。
答案 0 :(得分:1)
您刚刚测试过requestCode但没有resultCode,所以我建议您检查resultCode用户是否已捕获图像或取消捕获。
尝试:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == CAMERA_REQUEST){
if (resultCode == Activity.RESULT_OK) {
// Image captured and saved to fileUri specified in the Intent
}
else if (resultCode == Activity.RESULT_CANCELED) {
// User cancelled the image capture
} else {
// Image capture failed, advise user
}
}
答案 1 :(得分:0)
您只需检查onActivityResult
,案例RESULT_OK
就是用户成功拍摄照片的情况RESULT_CANCELLED
就是当您按下硬件后退按钮时想要回到你的活动。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == CAMERA_REQUEST){
if(resultCode == RESULT_OK){
// your code comes here
}
if(resultCode == RESULT_CANCELED){
}
}
}