如何从android中的另一个活动调用takePicture()方法?

时间:2013-08-28 11:49:53

标签: java android nullpointerexception

我有主要的活动课,我写了这样的takePicturefromCamera()方法:

public void takePicturefromCamera() {
             Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                try {

                    String state = Environment.getExternalStorageState();
                    if (Environment.MEDIA_MOUNTED.equals(state)) {
                        mImageCaptureUri = Uri.fromFile(mFileTemp);
                    }
                    else {
                    //  The solution is taken from here: http://stackoverflow.com/questions/10042695/how-to-get-camera-result-as-a-uri-in-data-folder

                        mImageCaptureUri = InternalStorageContentProvider.CONTENT_URI;
                    }   
                    intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);
                    intent.putExtra("return-data", true);
                    startActivityForResult(intent, REQUEST_CODE_TAKE_PICTURE);
                } catch (ActivityNotFoundException e) {

                    Log.d("TAG", "cannot take picture", e);
                }

        }

现在我有另一个班级,我正在做一些裁剪部分,我的要求是,如果裁剪用户觉得他想要拍摄另一张照片而不是之前我想要调用上面的主要活动类的takePicturefromCamera()方法一些按钮点击。任何人都可以帮我,我怎么能这样做。我试过这样做:

retake_button.setOnClickListener(
                     new View.OnClickListener() {
                         public void onClick(View v) {
                            // setResult(RESULT_CANCELED);
                           main m = new main();
                           m.takePicturefromCamera();
                         }
                     });

但它在mImageCaptureUri = Uri.fromFile(mFileTemp);

给了我错误NullPointerException

请帮帮我。

2 个答案:

答案 0 :(得分:0)

我建议你将takePicturefromCamera()保留在单独的类中,然后调用此方法传递activitycontext和所需的数据。

否则,您可以Activity2 extend Activity1并使用takePicturefromCamera()

答案 1 :(得分:0)

将该方法设为静态,以便在应用程序的任何位置使用它。

还要在函数中添加一个参数“File”。通过这种方式,您还可以灵活地在应用程序中为不同的文件对象使用相同的功能。

希望这会对你有所帮助。