У меня есть две проблемы:startActivityForResult в фрагменте
Первого: Интересно знать, в 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 extend 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);
}
благодаря
Он все еще отрицает. Потому что когда я отлаживаю, я вижу resultCode на caemra фрагменте == 0; (Toast = cancel). Я думаю, моя проблема в startActivityForResult и onActivityResult. –
@ AceAkatsuki..okay ... теперь расскажите мне о своей главной проблеме, чтобы решить эту проблему, или вы можете работать с другим кодом, который будет работать более эффективно, чем это –
@AceAkatsuki ... Я обновил свой ответ, который, безусловно, поможет вам –