마스터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 주소값을 받아온다.
=> 이렇게 적은 부분에서 당연히 주소값을 못받아와서
오류가 나지않았을까 합니다
...