마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 에러문 입니다.

0 추천

 

// Photo Button
    public void imgOnClick(View v){
         
        builder.setView(linear)
        .setPositiveButton("앨범",
            new DialogInterface.OnClickListener() {
             
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    ImageView imgView = (ImageView)linear.findViewById(R.id.dialogImgView);
                    Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
                    intent.setType("image/*");
                    startActivityForResult(intent, requestCode1);
                }
            }
        )      
        .setNegativeButton("카메라",
            new DialogInterface.OnClickListener() {
                 
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE, null);
                    startActivityForResult(intent, requestCode2);
                }
            }
        );
        mPopupDlg = builder.show();
 
    }
     
     
    //   이문제 인줄 알고 햇는데 ㅡㅡ 안됨 .. 해결 방법을없을까요??
    // 앨범, 카메라 선택시 도중에 종료 할경우 다이얼로그 종료시킴.
    @Override
    public void onBackPressed() {
         
        super.onBackPressed();
        mPopupDlg.dismiss();
 
    }
     
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        ImageView imageView = (ImageView)findViewById(R.id.imgView);
        photoUri = data.getData(); // Uri 주소값을 받아온다.
 
        if(data != null){
            if(requestCode == requestCode1 && resultCode == RESULT_OK){ //앨범 이미지 선택시       
 
                try{
                     
                    profileBitmap = Images.Media.getBitmap(getContentResolver(), photoUri);    
                    profileBitmap = Bitmap.createScaledBitmap(profileBitmap, profileBitmap.getWidth(), profileBitmap.getHeight(), true);
 
                    imageView.setBackgroundResource(0);
                    imageView.setImageBitmap(profileBitmap);
                    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                    System.out.println("앨범 이미지 선택시");
                }catch(FileNotFoundException e){
                    e.printStackTrace();
                }catch(IOException e){
                    e.printStackTrace();
                }
            }else if(requestCode == requestCode2 && resultCode == RESULT_OK){ //카메라 선택시
                 
                try{
                    profileBitmap = (Bitmap)data.getExtras().get("data");
                    imageView.setImageBitmap(profileBitmap);
                    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                    System.out.println("카메라 선택시");
                }catch(Exception e){
                    e.printStackTrace();
                }
                 
                 
            }else{
                Toast toast = Toast.makeText(this, "이미지 선택 취소", Toast.LENGTH_LONG);
                toast.show();
            }  
        }
 
    }

 

kdi0373 (470 포인트) 님이 2014년 7월 3일 질문

2개의 답변

+1 추천
 
채택된 답변
photoUri = data.getData(); // Uri 주소값을 받아온다.
일단 에러가 나는 부분은 data.getData() 입니다.
댓글에서 설명 해주셨듯이 이미지를 선택을 안했을경우 resultCode는 RESULT_CANCEL을 리턴 합니다. Intent는 Null을 리턴 하구요
 
구문처리 수정해주시면 될거 같네요
갈무리 (12,430 포인트) 님이 2014년 7월 3일 답변
kdi0373님이 2014년 7월 3일 채택됨
0 추천
뭐가 문제라는거죠?

PrspCustIndvdlRegActivity 303라인에서 NullPointerException났다고 뜨는데요
whdrb19 (23,520 포인트) 님이 2014년 7월 3일 답변
앨범 선택 후 이미지 선택 하지 않고 그냥 백버튼 누르면 저런 에러가 발생합니다.
303라인에 무슨코드가 있는거죠?
백버튼을 누르면
onActivityResult 여기를 타고잇는데
제가 생각하기로는 당연히 취소를 누르면 data가 null값인데

photoUri = data.getData(); // Uri 주소값을 받아온다.
=> 이렇게 적은 부분에서 당연히 주소값을 못받아와서
오류가 나지않았을까 합니다
...