私には2つの問題があります:
まず、方法1を使用するとアプリが正常に実行されますが、方法2を変更すると実行できなくなります..方法1(写真を簡単に撮る):
private void takePhoto() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Log.d(TAG, "Take photo .......");
startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
}
そして方法2:
public void dispathTakepictureIntent() {
Context context = getActivity();
PackageManager packageManager = context.getPackageManager();
if (packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA) ==false)
{
Toast.makeText(getActivity()
, "This device does not have a camera.", Toast.LENGTH_SHORT).show();
return;
}
else
{
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null)
{
File photoFile = null;
try {
photoFile = createCurrentPhotoPath();
}
catch (IOException ex)
{
Toast.makeText(getActivity(), "null photo Path", Toast.LENGTH_LONG).show();
}
if (photoFile != null) {
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(photoFile));
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
}
}
}
}
---カメラ フラグメントの onActivityResult:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_TAKE_PHOTO && resultCode == Activity.RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
if (imageBitmap != null)
Img_show.setImageBitmap(imageBitmap);
else
Toast.makeText(getActivity(), "null photo bitmap", Toast.LENGTH_LONG).show();
} else
Toast.makeText(getActivity(), "Cancel !", Toast.LENGTH_LONG).show();
}
主な問題:今、私は MainFragment が FragmentActivity を拡張しています(フラグメントカメラとマップがあります)。しかし、フラグメントカメラで私が
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
次に、メソッド onActivityResult で、resultCode は常に ==0 ですが、==1 にする必要があります。. 誰が私の問題を表示できますか??? 私のどこが間違っていますか??
mainFragment に注意してください:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
ありがとう