【发布时间】:2016-12-26 03:28:15
【问题描述】:
我有三个活动
MessagesAttachPhotoActivityMessageGalleryFolderSelectorActivityImagePickerActivity
MessagesAttachPhotoActivity 用startActivityForResult() 调用MessageGalleryFolderSelectorActivity。
MessageGalleryFolderSelectorActivity 活动显示手机上的照片文件夹,然后选择一个文件夹。
ImagePickerActivity 然后用setActivityForResult() 调用。一旦从ImagePickerActivity 中选择图像,它就会通过MessageGalleryFolderSelectorActivity 传回MessagesAttachPhotoActivity。
当我第一次运行该应用程序时,一切正常。但是,如果我之后再次尝试选择图像,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);
ImagePickerActivity:
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) {
}
}
【问题讨论】:
-
尝试使用startActivity
-
@ChiragArora 到底在哪里?
-
在 startActivityForResult(intent, MessageThread.MessageType.IMAGE);使用 startActivity(intent);
-
@ChiragArora 没有帮助。
-
这 3 项活动的清单?
标签: android android-intent android-activity startactivityforresult