3つの活動をしています
MessagesAttachPhotoActivity
MessageGalleryFolderSelectorActivity
ImagePickerActivity
MessagesAttachPhotoActivity
MessageGalleryFolderSelectorActivity
で呼び出しますstartActivityForResult()
。
MessageGalleryFolderSelectorActivity
アクティビティは、電話に写真フォルダーを表示し、フォルダーを選択します。
ImagePickerActivity
で呼び出されsetActivityForResult()
ます。から画像が選択されると、経由ImagePickerActivity
で に戻されます。MessagesAttachPhotoActivity
MessageGalleryFolderSelectorActivity
アプリを初めて実行すると、すべて正常に動作します。ただし、後でもう一度画像を選択しようとすると、 のMessageGalleryFolderSelectorActivity
後に閉じませんsetResult()
。
finish()
、this.finish()
、((Activity)getApplicationContext()).finish()
、およびを呼び出してみましたが、super.onBackPressed()
成功しませんでした。
連続実行でアクティビティが閉じないのはなぜですか?
これが私のコードです:
MessageGalleryFolderSelectorActivity の呼び出し:
Intent intent;
Bundle arguments = new Bundle();
Bundle bundle;
intent = new Intent(this, MessageGalleryFolderSelectorActivity.class);
bundle = new Bundle();
bundle.putInt(Constants.INTENT_EXTRA_LIMIT, Constants.IMAGES_SELECT_LIMIT);
bundle.putInt("Request", MessageThread.MessageType.IMAGE);
intent.putExtras(bundle);
startActivityForResult(intent, MessageThread.MessageType.IMAGE);
イメージピッカー アクティビティ:
imagesIntent.putExtra(ImagePickerActivity.INTENT_EXTRA_MODE,
ImagePickerActivity.MODE_MULTIPLE);
imagesIntent.putExtra(ImagePickerActivity.INTENT_EXTRA_LIMIT, 10);
imagesIntent.putExtra(ImagePickerActivity.INTENT_EXTRA_SHOW_CAMERA, false);
imagesIntent.putExtra(ImagePickerActivity.INTENT_EXTRA_ALBUM,album);
//imagesIntent.putExtra(ImagePickerActivity.INTENT_EXTRA_SELECTED_IMAGES, images);
startActivityForResult(imagesIntent, MessageThread.MessageType.IMAGE);
データを MessageGalleryFolderSelectorActivity に戻す:
Intent data = new Intent();
data.putParcelableArrayListExtra
(ImagePickerActivity.INTENT_EXTRA_SELECTED_IMAGES, selectedImages);
data.putExtra(ImagePickerActivity.INTENT_EXTRA_ALBUM,album);
setResult(RESULT_OK, data);
finish();
return true;
データを最初の呼び出しアクティビティに戻そうとしていますが、このアクティビティは MessageGalleryFolderSelectorActivity を閉じません:
@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
ArrayList<Image> selectedImages = data.getParcelableArrayListExtra
(ImagePickerActivity.INTENT_EXTRA_SELECTED_IMAGES);
String album = data.getStringExtra(ImagePickerActivity.INTENT_EXTRA_ALBUM);
Intent intent = new Intent();
intent.putExtra(ImagePickerActivity.INTENT_EXTRA_ALBUM, album);
intent.putParcelableArrayListExtra
(ImagePickerActivity.INTENT_EXTRA_SELECTED_IMAGES, selectedImages);
setResult(Activity.RESULT_OK, intent);
this.finish();
return;
} else if (resultCode == RESULT_CANCELED) {
}
}