【问题标题】:How to avoid closing the popup when I select an image from the gallery?从图库中选择图像时如何避免关闭弹出窗口?
【发布时间】:2020-10-17 15:58:54
【问题描述】:

我正在编写一个 android 应用程序,它添加了一个带有图像和描述的帖子。为此,我创建了一个便于添加帖子的弹出框:

dialogAddPost = new Dialog(this);
dialogAddPost.setContentView(R.layout.popup_add_post);
Objects.requireNonNull(dialogAddPost.getWindow()).setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialogAddPost.getWindow().setLayout(Toolbar.LayoutParams.MATCH_PARENT, Toolbar.LayoutParams.WRAP_CONTENT);
dialogAddPost.getWindow().getAttributes().gravity = Gravity.TOP;

通过弹出窗口,可以通过此意图添加图像:

Intent iGallery = new Intent(Intent.ACTION_GET_CONTENT);
iGallery.setType("image/*");
startActivityForResult(iGallery, REQUESCODE);

当用户选择“从图库中打开图片”而不是最近的图片时,就会出现问题。实际上,选择图像后,应用程序会刷新并关闭弹出窗口。再次点击“添加帖子”,帖子会重新打开,之前输入的信息会消失(图片除外)。如何避免关闭弹窗?

更新

Intent.ACTION_GET_CONTENT 替换为Intent.ACTION_PICK 即可解决问题。但是在互联网上,我读到不推荐 ACTION_PICK,而 ACTION_GET_CONTENT 更现代,得到更好的支持。对此有何建议?

【问题讨论】:

  • 是的,Android 操作系统可以随时关闭您的活动,如果它不是最顶级的活动。您必须使用 onSaveInstanceState() 来保存状态,以便在再次调用 onCreate() 且其参数不为 null 时重新创建状态。

标签: android dialog popup


【解决方案1】:

你可以使用 dialog.setCanceledOnTouchOutside(false);如果您在对话框之外触摸,它不会关闭对话框。

类似的,

对话框 dialog = new Dialog(context); dialog.setCanceledOnTouchOutside(false);

【讨论】:

  • 这不是我需要的。当我从图库中选择图像时,我必须确保应用不会刷新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-12
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
相关资源
最近更新 更多