【问题标题】:Dialog not visible after coming back on different activity回到不同的活动后对话框不可见
【发布时间】:2014-03-19 07:50:05
【问题描述】:

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

在 MainActivity 我有三个标签:-

  1. 地图视图
  2. 列表视图
  3. ListView [打开一个对话框 onItemClick 然后重定向到不同的页面]

问题在于这种情况:-

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

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

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

提前致谢。

【问题讨论】:

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


    【解决方案1】:

    我遇到了类似的问题并设法找到了快速解决方法,尽管我不确定您是否完全符合我的情况。但就这样吧:

    我的应用程序使用 ViewAnimator,其中的子项是经典的 android 布局,但 GlSurfaceView 除外。在调用另一个活动(在我的情况下为 Swarm)并返回(关于 AlertDialogs 和 Spinner“弹出窗口”时,我遇到了与您相同的问题。Toast 正在工作)。

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

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

    我猜想以某种方式创建带有自己的 z 的实际表面在窗口下,AlertDialogs 使用 z 顺序的事实以及活动的隐藏/显示会造成一团糟。

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

    【讨论】:

    • 在 debug 和 GrepCode 中签入后,当 ViewAnimator 更改其当前子项时,它会更改以前子项的可见性以隐藏它们。但是在 LinearLayout 上调用它不会在子 GLSurfaceView 上调用它。这就解释了为什么在具有透明背景的情况下到处都可以看到底层窗口。这也可以解释为什么对话框似乎有 z 问题。我不知道为什么……对我来说,表面视图背后的部分设计是为了允许拥有覆盖视图(按钮、广告等)。也许表面视图是我们要自己管理的特殊视图?
    • 问题的另一个原因可能是透明度:stackoverflow.com/questions/8891262/…(顺便说一句,这对我不起作用)似乎在使用 Google 地图 API 时也存在问题。对我有用的“解决方案”(同时仍在使用我的父布局): - 在 onPause 中使用 surfaceView.setVisibility(View.GONE),除非当前显示 - 显示 SurfaceView 时使用 setVisibility(View.VISIBLE)。无论如何,这对我的叠加视图不起作用(即使在显示时我没有“隐藏”表面,背景仍然是黑色的)
    猜你喜欢
    • 1970-01-01
    • 2013-09-03
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    相关资源
    最近更新 更多