gpt4 book ai didi

android - finish() 在第一次运行后调用时不关闭 Activity

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:18 26 4
gpt4 key购买 nike

我有三个 Activity

  • MessagesAttachPhotoActivity
  • MessageGalleryFolderSelectorActivity
  • ImagePickerActivity

MessagesAttachPhotoActivity 使用 startActivityForResult() 调用 MessageGalleryFolderSelectorActivity

MessageGalleryFolderSelectorActivity Activity 显示手机上的照片文件夹并选择一个文件夹。

然后使用 setActivityForResult() 调用

ImagePickerActivity。从 ImagePickerActivity 选择图像后,它会通过 MessageGalleryFolderSelectorActivity 传回 MessagesAttachPhotoActivity

当我第一次运行该应用程序时,一切正常。但是,如果我之后再次尝试选择图像,MessageGalleryFolderSelectorActivity 不会在 setResult() 之后关闭。

我试过调用 finish()this.finish()((Activity)getApplicationContext()).finish() , 和 super.onBackPressed() 没有成功。

为什么 Activity 在连续运行时没有关闭?

这是我的代码:

调用 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);

图片选择器 Activity :

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;

尝试将数据传递回初始调用 Activity ,但此 Activity 不会关闭 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) {

}
}

最佳答案

我认为我们可以使用 getParent() 引用父 Activity 。因此,在 MessageGalleryFolderSelectorActivity 类中,我们可以在重写的 onActivityResult 上编写 ((Activity)getParent()).OnActivityResult(requestCode,resultCode,data)。因此,我们将获得的值移交给父级而不对其进行处理。

关于android - finish() 在第一次运行后调用时不关闭 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39031076/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com