次のような 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();
}
});
しかし、エラー NullPointerException が表示されますmImageCaptureUri = Uri.fromFile(mFileTemp);
私を助けてください。