【问题标题】:Android: Activity is destroy when pick image from galleryAndroid:从图库中选择图像时活动被破坏
【发布时间】:2016-06-21 10:19:23
【问题描述】:

目前我有一个问题,当我从画廊回来时,活动被破坏并重新创建。
步骤如下:

  1. 从“照片片段”开始,我开始打算从图库中挑选图片:

    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Select File"), SELECT_IMAGE);
    
  2. 在图库中,我选择“相机”文件夹,然后按硬“主页”按钮。转到设备的主屏幕。
  3. 打开相机应用程序并拍摄图像。
  4. 转到我的应用程序(当前来自图库),然后选择从第 3 步捕获的图像。

    ---> 然后应用程序的活动被销毁并再次重新创建。这是因为屏幕混合了 2 个片段的屏幕:“照片片段”和“主页片段”的 UI。

你知道我的活动是如何重新创建的吗?以及如何解决?
我为此花了将近一天的时间,但仍然没有结果。

非常感谢任何帮助。谢谢。

【问题讨论】:

  • 在 logcat 中设置你的活动类和异常
  • 它没有任何异常,只需调用onDestroy(),然后再次调用onCreate()。谢谢。

标签: android android-activity android-gallery


【解决方案1】:

该行为是正确的,因为它会破坏活动并在您从图像选择器返回时重新创建。您需要使用以下方法保存和恢复您的活动状态。

保存 -> onSaveInstanceState 恢复 -> onRestoreInstanceState

更多参考 -> Recreating Activity

您也可以对 Fragments 执行相同的操作,方法是使用 onSaveInstanceState 保存并使用 onActivityCreated 恢复状态。

【讨论】:

  • 我的活动有 viewpager,它有几个片段。其中一个片段正在开始选择图像的意图。 Intent i = new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI); i.setType("image/*"); getActivity().startActivityForResult(i,ACQUIRE_IMAGE_REQUEST_CODE);。在获取图像或从解决意图的活动(例如画廊)单击返回或取消后,我的活动布局被破坏。 它没有重新创建,因为我在 onCreate() 中设置了一些要打印的日志代码,但它们没有被打印。
  • 你的 onActivityResult 被调用了吗?
  • 是的,它已被调用,我可以获取从图库中挑选的图像。但是在单击图库中的图像和出现在我的浏览器片段中的图像之间,我的活动会在一段时间内变为空白。我有一个背景图像,我已经为我的活动设置了它,它是唯一显示的! viewpager 及其下方的所有其他视图消失
  • 同样的问题。你的活动被扼杀了。将您的手机连接到 Android Studio 并在 android 监视器中检查启动相机时它应该显示为 DEAD 的过程。
猜你喜欢
  • 2021-10-02
  • 2013-04-07
  • 1970-01-01
  • 1970-01-01
  • 2011-07-15
  • 1970-01-01
相关资源
最近更新 更多