2012-04-09 57 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()必須在Activity類中聲明(不在onClickListener中)。如果您更正了「@override」('o'必須大寫),則在您當前的onActivityResult()聲明之前輸入錯誤,您會看到我的意思...

請參閱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

我應該刪除@覆蓋並放置onActivityResult()Activity類之外? – 2012-04-09 03:33:48

+0

\ @Override註釋告訴編譯器你聲明的函數應該覆蓋父類中的某些東西。目前,您在輸入\ @覆蓋 - o時沒有大寫字母!因此,編譯器不會警告您的覆蓋無效。您應該將onActivityResult聲明爲直接在Activity類中。我更新了我的答案... – hopia 2012-04-09 03:36:28

+0

非常感謝!它的工作:D – 2012-04-09 03:44:06