【发布时间】: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 时重新创建状态。