2012-04-09 3 views
1

카메라에서 이미지를 가져 와서 표시하는 Android 애플리케이션을 만들고 있습니다. 그러나 onActivityResult()이 실행되지 않았기 때문에 클릭 한 이미지를 표시 할 수 없습니다.onActivityResult가 Android에서 실행되지 않음

다음은 제 코드입니다. 아무도 내가 뭘 놓치고 제안 할 수 있습니까?

public class Main extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     final int CAMERA_PIC_REQUEST = 1337; 
     Button b = (Button) findViewById(R.id.button1); 
     b.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
       startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 

      } 
      @override 
      public void onActivityResult(int requestCode, int resultCode, Intent data) { 
       Log.d("Message1", "I reached 2"); 
       //super.onActivityResult(requestCode, resultCode, data); 
       if (requestCode == CAMERA_PIC_REQUEST) { 
        // do something 
        Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
        ImageView image = (ImageView) findViewById(R.id.imageView1); 
        image.setImageBitmap(thumbnail); 

       } 
      } 




     }); 
    } 
} 

답변

1

onActivityResult()는 onClickListener 내부가 아닌 Activity 클래스에 선언되어야합니다. 현재의 onActivityResult() 선언 앞에 "@override"('o'가 대문자 여야 함)를 수정하면, 무슨 뜻인지 알 수 있습니다 ...

Activity.onActivityResult() documentation을 참조하십시오. 여기

는 클래스가 같아야하는 방법은 다음과 같습니다

public class Main extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     final int CAMERA_PIC_REQUEST = 1337; 
     Button b = (Button) findViewById(R.id.button1); 
     b.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
       startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 

      } 
     }); 
    } 


    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     Log.d("Message1", "I reached 2"); 
     //super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == CAMERA_PIC_REQUEST) { 
     // do something 
     Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
     ImageView image = (ImageView) findViewById(R.id.imageView1); 
     image.setImageBitmap(thumbnail); 
     } 
    } 

} 
+0

내가 @Override를 제거하고 작업 클래스 외부에서 onActivityResult를()를 배치해야 하는가? –

+0

\ @Override 어노테이션은 선언하고있는 함수가 부모 클래스의 내용을 덮어 써야한다는 것을 컴파일러에 알려줍니다. 현재 입력하는 방법에 오타가 있습니다. \ @ Override - o는 대문자로 표기하지 않습니다! 따라서 컴파일러는 재정의가 유효하지 않다고 경고하지 않습니다. onActivityResult를 Activity 클래스 내부에 직접 선언해야합니다. 내 대답을 업데이 트했습니다 ... – hopia

+0

고마워요! 효과가 : D 조 –

관련 문제