回到不同的活动后,对话框不可见

时间:2014-03-19 07:50:06

标签: android google-maps android-alertdialog google-play-services android-fragmentactivity

在我的应用程序中,我有2个活动,MainActivity和SecondActivity。

在MainActivity中,我有三个标签: -

  1. MapView类
  2. 的ListView
  3. ListView [打开对话框onItemClick,然后重定向到不同页面]
  4. 问题出在这种情况: -

    • 转到第三个标签并选择任何列表项,对话框打开[正常工作]
    • 现在选择任何选项并重定向到第二个活动
    • 在第二个屏幕上执行操作
    • 现在按下后退按钮我们回到MainActivity with 默认第三个标签打开[我们从第三个标签离开]
    • 现在从第三个列表项中选择任何其他选项 标签[错误!]。屏幕颜色变为透明黑色, 如果点击正确的位置,所有选项都可以正常工作。但是 对话不可见。

    仅在2.2版本,2.3版本和3.0版本中发生这种情况。 如果我更改了标签并返回第三个标签,那么它可以正常工作。 另请注意:SecondActivity还有一个全屏谷歌地图。

    我怀疑,这个问题是由GoogleMaps引起的。 请帮忙!

    提前致谢。

1 个答案:

答案 0 :(得分:1)

我有类似的问题,并设法找到一个快速解决方案,虽然我不确定你是否完全符合我的情况。但就是这样:

我的应用程序使用ViewAnimator,其中儿童是经典的Android布局,除了一个是GlSurfaceView。我遇到了与调用另一个活动(在我的情况下为Swarm)并返回时相同的问题(关于AlertDialogs和Spinner"弹出窗口"。Toasts正在运行)。

然后我注意到问题实际上是由于我的GLSurfaceView:我删除了我的其他活动,并且能够通过转到GLSurfaceView,返回菜单,回到主页,然后返回应用程序来重现问题。在调查时,当我注意到我的GLSurfaceView子实际上是一个带有GLSurfaceView Inside的LinearLayout时,我能够找到一个quickfix。当我删除(无用的)父布局时,我的问题就完全消失了。

我不知道为什么会发生这种情况,稍后我会进行更多调查。但对我来说,表面视图是问题所在: http://developer.android.com/reference/android/view/SurfaceView.html "表面是Z排序的,因此它位于窗口后面,保持着SurfaceView; SurfaceView在其窗口中打孔以允许其表面显示。"。请注意,现在,在表面视图子项之后显示另一个具有一些空背景的子项不会显示具有黑色背景的表面视图(就好像它位于下方),而只是显示黑色。

我想不知怎的,用自己的z创建实际表面在窗口下,AlertDialogs使用z顺序,隐藏/显示活动会造成完全混乱。

如果您没有任何GLSurfaceView,我认为这可能对您没有帮助,但Google Maps可能会使用一个吗?如果是这样,我不确定你如何解决它,但它至少可以解决发生的事情。