在Android中未触发onActivityResult

在Android中未触发onActivityResult,android,camera,android-camera,Android,Camera,Android Camera,我正在制作一个android应用程序,它从相机上获取图像,然后显示出来。但是,我无法显示单击的图像,可能是因为未触发onActivityResult() 这是我的一段代码。有人能告诉我我错过了什么吗 public class Main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstance

我正在制作一个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); 

                }
            }




        });
    }
} 
onActivityResult()必须在活动类中声明(而不是在onClickListener中)。如果您更正当前onActivityResult()声明之前的“@override”('o'必须大写),键入错误,您将明白我的意思

下面是您的班级应该是什么样子:

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); 
       }
     }

} 
onActivityResult()必须在活动类中声明(而不是在onClickListener中)。如果您更正当前onActivityResult()声明之前的“@override”('o'必须大写),键入错误,您将明白我的意思

下面是您的班级应该是什么样子:

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); 
       }
     }

} 

我应该删除@Override并将onActivityResult()放在Activity类之外吗?\@Override注释告诉编译器您要声明的函数应该覆盖父类中的某些内容。目前,您键入\@Override的方式有误——o没有大写!因此,编译器不会警告您覆盖无效。您应该将onActivityResult声明为直接位于活动类内部。我更新了我的答案…我是否应该删除@Override并将onActivityResult()放在Activity类之外?\@Override注释告诉编译器您声明的函数应该覆盖父类中的某些内容。目前,您键入\@Override的方式有误——o没有大写!因此,编译器不会警告您覆盖无效。您应该将onActivityResult声明为直接位于活动类内部。我更新了我的答案。。。