nullpointerexception不拍照

时间:2013-05-16 09:11:07

标签: java android nullpointerexception

我有一个应用程序,我正在拍摄一个活动(除其他外)。

现在,当我按下按钮拍摄照片时,它会打开相机。如果我按下后退按钮或取消按钮(不拍照),它会崩溃并给出

  

空指针

  

未能提供结果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);
            }

据我记忆,以上用于此目的。 我不知道还能做什么。

2 个答案:

答案 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){  
      }
   }
}