2017-12-26 28 views
0

이미지를 캡처하여 이미지보기에 저장하는 이미지를 만들었지 만 카메라를 열고 전화의 뒤로 버튼을 누르면 내 앱이 닫히고 오류가 있음을 발견했습니다. 의도에 대한이미지 의도 및 뒤로 누름

내 코드 : 비트 맵과 이미지 뷰에 대한

btnImg.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(i, 0); 
    } 
}); 

내 코드 :

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 
    imgBitmap = (Bitmap) data.getExtras().get("data"); 
    img.setImageBitmap(imgBitmap); 
} 

오류가 : 라인 83에

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=0, data=null} to activity {gomugomu.civicalert/gomugomu.civicalert.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Bundle android.content.Intent.getExtras()' on a null object reference 
        at android.app.ActivityThread.deliverResults(ActivityThread.java:5004) 
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:5047) 
        at android.app.ActivityThread.access$1600(ActivityThread.java:229) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1875) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:7331) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
       Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Bundle android.content.Intent.getExtras()' on a null object reference 
        at gomugomu.civicalert.MainActivity.onActivityResult(MainActivity.java:83) 
        at android.app.Activity.dispatchActivityResult(Activity.java:7165) 

은 이것이다 : imgBitmap = (Bitmap) data.getExtras().get("data");.

는 내가 카메라를 종료하고 사용자가 성공적으로 작업을 수행 할 때 이전 작업

+0

resultCode==RESULT_OKdata!=null을 확인하는 당신이 오류 로그를 공유 할 수 시도? – R2R

+0

@ R2R 질문에 오류를 넣어 –

답변

3

에 갈 뒤로 버튼을 누를 때의 resultCode가 RESULT_OK 동일 될 것이라고합니다. 사용자가 뒤로 버튼을 누르면 resultCode는 RESULT_CANCELED가됩니다. 따라서 코드를 이와 같이 수정해야합니다.

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == 0 && resultCode == RESULT_OK) { 
      imgBitmap = (Bitmap) data.getExtras().get("data"); 
      img.setImageBitmap(imgBitmap); 
     } 
    } 
+0

고마워 작동합니다 : D –

0

는이 request code == 0

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == 0 && resultCode == RESULT_OK && data != null) { 
      imgBitmap = (Bitmap) data.getExtras().get("data"); 
      img.setImageBitmap(imgBitmap); 
     } 
    } 
} 
+0

나는 mehulpatel에서 대답을 사용하고 있지만 작동하지만 :) –