1

一个我无法诊断或弄清楚的非常奇怪的问题,所以我希望其他人已经看到了这一点,并且可能对正在发生的事情有所了解。

所有活动都继承自 AppCompatActivity。

场景是这样的:

  1. Activity 1(扩展 AppCompatActivity)启动 Activity 2
  2. Activity 2 在用户输入后执行一些操作,然后通过 onBackPressed 退出
  3. 活动 1 根据活动 2 执行的操作显示一个 Snackbar,作为确认的手段

问题是 Snackbar 根本不显示,或者在关闭时被延迟并闪烁。如果我触摸屏幕并与 Activity 1 交互,则 Snackbar 会立即可见。

我还通过开发人员选项打开了“显示布局边界”,我可以看到 Snackbar 实际上并没有被显示(不可见),直到我触摸屏幕(或直到它开始动画出来)。

我创建了一个示例应用程序,它似乎在那里工作正常,但在我们的生产应用程序中没有这样的运气。Activity 1 本身在 ScrollView 中显示了大量信息和内容,但我认为这不会导致问题,除非正在发生我无法分辨的渲染通道并且导致显示延迟.

4

1 回答 1

2

我创建了一个项目,您可以使用它来演示这个问题。我相信这是一个错误,您可以通过不使用自己的转换来解决它。虽然我也相信并不是所有的过渡动画都会导致这个问题。我认为在这种情况下保持动画是罪魁祸首。

以下是该问题的简要概述:

  1. Activity 1 和 2 都有包含大量内容的滚动视图。
  2. Activity 2 使用 overridePendingTransition(slide_up, slide_down) 打开 Activity 2,尽管本示例不需要这样做。
  3. Activity 3 显示内容然后关闭:

    a) 使用 overridePendingTransition(hold, slide_down)。为了在这个场景中看到 Snackbar,您需要触摸屏幕并与 Activity 1 交互。

    b) 不使用转换。Snackbar 应该是可见的。

我对这个问题的解决方案是删除 overridePendingTransition。如果您对此有其他想法,请发表评论。

于 2015-06-25T15:30:04.553 回答