onActivityResult未在Android中触发

时间:2012-04-09 03:22:49

标签: android camera android-camera

我正在制作一个Android应用程序,它从相机中获取图像然后显示它。但是,我无法显示点击的图片,可能是因为onActivityResult()未被触发。

这是我的一段代码。谁能告诉我我错过了什么?

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 个答案:

答案 0 :(得分: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); 
       }
     }

}