0

我正在做一个 android 地图,其中我有一个使用 mapsforge 的点的地图,地图上的每个点都保存在一个空间数据库中。之后,每次单击地图都会打开一个自定义弹出窗口,该窗口接收当前活动作为上下文,其中包含有关可在数据库中编辑和更新的点的所有信息。现在,我在弹出窗口中添加了一个名为“拍照”的按钮,单击该按钮时执行以下操作:

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(mapViewer.getPackageManager()) != null) {
takePictureIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
mapViewer.startActivityForResult(takePictureIntent, 1);
}

在我拍照并保存它们之后,应该返回到我之前的地图活动,并打开弹出窗口,就像在我点击弹出窗口内的拍照按钮之前一样,但我收到以下错误:

E/WindowManager(15089): android.view.WindowLeaked: Activity com.ui.MapViewer has leaked window android.widget.PopupWindow$PopupViewContainer@4281bc98 最初添加在这里

为什么会这样?我无法理解!之后,我尝试创建我的自定义活动来实现相机 api,只有一个按钮来拍照,然后从我的弹出窗口开始这个活动,然后在拍照后调用活动的完成(),这样我就不用了'没有收到任何错误。然而,这对我来说不是一个解决方案,因为我需要在我的相机应用程序中进行缩放和闪光。

我对弹出窗口的实现在以下 pastebin 中:

http://pastebin.com/9hHgSrUH

谁能帮我解决这个严重的问题?

最好的祝福

编辑:我检测到当我在拍照后单击保存时调用堆栈中活动的 onDestroy。但是为什么叫destroy?我不叫它。

4

1 回答 1

0

问题可能是相机应用程序在拍摄照片后更改了您的屏幕方向,并且您的主要活动被破坏并再次创建。

试着做

android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
于 2014-05-04T20:36:57.200 回答