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

ImageView 갱신이 안되는데 어떻게 하면 되나요?

0 추천
ImageView가 화면에 두개가 있고
그 ImageView Touch시 이벤트를 받아서 하나는 카메라 다른 하나는 Canvas를 띄우고 사진 찍고 저장하거나 펜글씨를 쓰고 저장하면 종료하는 시점에서 결과를 받아서 생성된 이미지를 ImageView에 보여주게 하는 프로그램입니다.
 
디버그를 해보니
그런데 최초 실행후 화면에 ImageView에 이미지가 없을때 버튼을 누르고 사진을 찍거나 펜글씨를 쓰고나서 저장하면
<<<<==== 요 라인이 실행이 되고 방금 찍은 사진이미지가 ImageView에 보입니다.
 
그런데 이 상태에서 또 ImageView를 Touch해서 다시 사진을 찍거나 Canvas에 추가로 그림을 그리고 나서 저장을 하면
<<<<==== 요 라인이 실행은 되는데 사진이미지는 안바뀝니다...
실제 찍은 사진 이미지는 Tablet에 있는데 안바뀌네요...
 
다시 말씀드리면 최초 ImageView에 이미지가 없을때는 setImageURI()로 설정한 이미지가 제대로 보이는데
이미지가 있는 상태에서 하면 이미지가 이전게 계속 남아 있습니다.
 
ImageView에 이미지를 올리려면 어떻게 해야 되는지요?
 
아래 제 Code를 옵립니다.
 
 
    startActivityForResult(intent, REQUEST_PICTURE);
 
 
 
 
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
 
    if (resultCode == RESULT_OK) {
    if (requestCode == REQUEST_PICTURE) {
        ((ImageView)findViewById(R.id.picture_image)).setImageURI(Uri.parse(mSrcImageFilePath));    <<<<====
        }
    }
    else if (resultCode == RESULT_CANCELED) {
        if (requestCode == REQUEST_PICTURE) {
        }
    }
}
 
 
참고로 기종은 갤럭시 노트 8.0 입니다.
블랙죠2 (220 포인트) 님이 2014년 8월 1일 질문

2개의 답변

0 추천

http://developer.android.com/reference/android/view/View.html#invalidate() 를 호출 해주셔야 화면이 다시 그려지면서  반영이 될 겁니다.

ex)

ImageView iv = ((ImageView)findViewById(R.id.picture_image));
 
iv.setImageURI(Uri.parse(mSrcImageFilePath));   
 
iv.invalidate();
사악미소 (65,330 포인트) 님이 2014년 8월 1일 답변
((ImageView)findViewById(R.id.picture_image)).setImageURI(Uri.parse(mSrcImageFilePath));                        
((ImageView)findViewById(R.id.picture_image)).invalidate();
위와 같이 해도 마찬가지입니다.
처음 한번, 이미지가 없을때 set 할 경우에만 이미지가 보여지고 그 다음부턴 디버그시 호출은 되는데 화면 갱신이 안되는지 이미지가 안변합니다.
–1 추천
Media Scan을해야지 정상적으로 보일듯싶습니다.
q1212 (26,020 포인트) 님이 2014년 8월 1일 답변
죄송합니다만 제가 이제 안드로이드에 입문한지 갓 2주 정도 밖에 안되는 초보라서 그런데 Media Scan이 무엇인지요?
...