2014-06-20 1 views
0

안녕하세요, 내 안드로이드 앱에서 선택할 의도로 이미지를 열려고합니다.인 텐트 선택기에서 이미지를 선택하면 안드로이드 앱이 다운 됨

또 다른 클래스에서는이 함수를 사용하여 대화 상자를 열고 IageView를 클릭하여 그림을 선택합니다.

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK) { 
     if (imageUploadHandler != null){ 
      imageUploadHandler.handleResult(this, data); 
     } 
    } 
} 

내가 대화 상자의 이미지 뷰를 클릭

, 의도가 보여, 나는 다음 이미지를 선택할 수 있습니다
public void OpenImageUploadDialog() { 
    final NavigationScreen context = (NavigationScreen) img.getContext(); 

    final Dialog imageUploadDialog = new Dialog(context); 
    imageUploadDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    imageUploadDialog.setContentView(R.layout.dialog_upload_image); 

    final TextView avatarStatus = (TextView) imageUploadDialog.findViewById(R.id.avatar_status); 
    final ImageView avatar = (ImageView) imageUploadDialog.findViewById(R.id.avatar); 
    Button addButton = (Button) imageUploadDialog.findViewById(R.id.save); 
    Button cancelButton = (Button) imageUploadDialog.findViewById(R.id.cancel); 

    dialog_img = avatar; 
    dialog_status = avatarStatus; 

    avatar.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      Intent intent = new Intent(); 
      intent.setType("image/*"); 
      intent.setAction(Intent.ACTION_GET_CONTENT); 

      Intent image_chooser = Intent.createChooser(intent, context.getString(R.string.select_picture)); 
      context.startActivityForResult(image_chooser, SELECT_PICTURE); 
     } 
    }); 

    addButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (isReady) { 
       if (Network.isNetworkAvailable(context)) { 
        imageUploadDialog.dismiss(); 
       } else {  
        Views.ShowErrorMessage(context, context.getString(R.string.no_internet)); 
       } 
      } else { 
       Views.ShowErrorMessage(context, context.getString(R.string.select_image_first)); 
      } 
     } 
    }); 

    cancelButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      imageUploadDialog.dismiss(); 
     } 
    }); 

    imageUploadDialog.show(); 
} 

그런 다음 활동 클래스에,이 있습니다. 최대한 빨리 앱으로 돌아가지만 활동은 흰색 화면이고 2 초 후에 충돌합니다. 로그는 다음과 같습니다.

06-20 18:24:02.465: E/AndroidRuntime(9254): FATAL EXCEPTION: main 
06-20 18:24:02.465: E/AndroidRuntime(9254): java.lang.RuntimeException: Unable to resume activity {android.arin/android.arin.NavigationScreen}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { dat=content://media/external/images/media/11738 (has extras) }} to activity {android.arin/android.arin.NavigationScreen}: java.lang.NullPointerException 
06-20 18:24:02.465: E/AndroidRuntime(9254):  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2639) 
06-20 18:24:02.465: E/AndroidRuntime(9254):  at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2667) 
06-20 18:24:02.465: E/AndroidRuntime(9254):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2140) 
06-20 18:24:02.465: E/AndroidRuntime(9254):  at android.app.ActivityThread.access$700(ActivityThread.java:143) 
06-20 18:24:02.465: E/AndroidRuntime(9254):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241) 
06-20 18:24:02.465: E/AndroidRuntime(9254):  at android.os.Handler.dispatchMessage(Handler.java:99) 
06-20 18:24:02.465: E/AndroidRuntime(9254):  at android.os.Looper.loop(Looper.java:137) 
06-20 18:24:02.465: E/AndroidRuntime(9254):  at android.app.ActivityThread.main(ActivityThread.java:4950) 
06-20 18:24:02.465: E/AndroidRuntime(9254):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-20 18:24:02.465: E/AndroidRuntime(9254):  at java.lang.reflect.Method.invoke(Method.java:511) 
06-20 18:24:02.465: E/AndroidRuntime(9254):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004) 
06-20 18:24:02.465: E/AndroidRuntime(9254):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771) 
06-20 18:24:02.465: E/AndroidRuntime(9254):  at dalvik.system.NativeStart.main(Native Method) 
06-20 18:24:02.465: E/AndroidRuntime(9254): Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { dat=content://media/external/images/media/11738 (has extras) }} to activity {android.arin/android.arin.NavigationScreen}: java.lang.NullPointerException 
06-20 18:24:02.465: E/AndroidRuntime(9254):  at android.app.ActivityThread.deliverResults(ActivityThread.java:3205) 
06-20 18:24:02.465: E/AndroidRuntime(9254):  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2626) 
06-20 18:24:02.465: E/AndroidRuntime(9254):  ... 12 more 
06-20 18:24:02.465: E/AndroidRuntime(9254): Caused by: java.lang.NullPointerException 
06-20 18:24:02.465: E/AndroidRuntime(9254):  at android.arin.NavigationScreen.onActivityResult(NavigationScreen.java:181) 
06-20 18:24:02.465: E/AndroidRuntime(9254):  at android.app.Activity.dispatchActivityResult(Activity.java:5361) 
06-20 18:24:02.465: E/AndroidRuntime(9254):  at android.app.ActivityThread.deliverResults(ActivityThread.java:3201) 
06-20 18:24:02.465: E/AndroidRuntime(9254):  ... 13 more 

누구에게이 문제가 있습니까?

감사

답변

0

은 현재 줄 번호를 포함하지 않은,하지만 난 NavigationScreen.java:181이

imageUploadHandler.handleResult (이, 데이터)입니다 같은데요;

이며 imageUploadHandler는 null입니다 (어떤 이유로 코드가 표시되지 않음). 어쨌든 NPE가 NavigationScreen.java:181을 가리키고있는 것처럼 보입니다.

+0

예 181은 그렇습니다. 또한 위 코드를 업데이트했습니다. null인지 확인합니다. 그러나 그것은 도움이되지 못했습니다. 그럼 그것은 크래쉬가 아니었지만 화면은 여전히 ​​흰색으로 바뀌었고 대화 상자가 닫힌 상태로 돌아가서'imageUploadHandler.handleResult (this, data); '를 실행하지 못했습니다 ... 디버깅을 시도했지만 디버거가 끊어졌습니다 내가 그림을 선택하면 (즉, 다음 단계를 클릭 할 수 없음). 나는 super.onActivityResult (requestCode, resultCode, data);에 중단 점을 두었습니다. 그러나 그곳에서 멈추지 않았습니다 ... – omega

+0

전화를 다시 시작하면 문제가 해결되는 것 같습니다 ... – omega

관련 문제