【问题标题】:Is there anything similar to FLAG_ACTIVITY_NEW_DOCUMENT for older APIs?对于旧 API,是否有类似于 FLAG_ACTIVITY_NEW_DOCUMENT 的内容?
【发布时间】:2015-10-05 04:24:07
【问题描述】:

我有几个活动,它们的外观和行为类似于对话框(但由于小部件的限制,实际上不能是对话框)。这些活动使用 Theme.Dialog 主题的扩展,在屏幕上显示为弹出窗口,而不会填满整个屏幕。

我的目标是他们将在外观上模仿对话框,以便它们显示在当前屏幕上的所有内容之上,而屏幕上的所有内容仍显示在对话框后面。

在 API 21 中,我可以在我的意图中使用 FLAG_ACTIVITY_NEW_DOCUMENT 来使活动完全做到这一点。但是,我的应用程序支持低至 API 16。我尝试了其他几个标志,但除了 NEW_DOCUMENT 之外,它们都没有给我正确的外观。所有其他人最终都会在对话活动后面打开我的实际应用程序,然后在我的活动完成后将其打开()。不会破坏交易,但并不理想。

有什么技巧可以让我的设计保持向后兼容的方式吗?

【问题讨论】:

    标签: android android-layout android-intent android-activity


    【解决方案1】:

    通过将 ACTIVITY_CLEAR_TASK 与 NEW_TASK 结合使用,我能够非常接近。这确保了我的活动的所有现有任务都被关闭并创建了一个新任务,从而确保我的应用不会出现在后台。

    不幸的是,这会带来消除用户当前状态的恼人副作用,但考虑到我将把它用于小部件(它们已经在主屏幕上),我怀疑它会是那个有影响力。

    不过,我还是在检查构建版本时封装了意图标志设置,因此至少 5.0+ 用户不会受到烦恼的影响:

        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
            pIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
        }
        else{
            pIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
        }
    

    【讨论】:

      猜你喜欢
      • 2011-06-22
      • 2016-11-03
      • 2018-11-12
      • 1970-01-01
      • 2017-11-11
      • 2011-02-09
      • 1970-01-01
      • 2015-06-05
      • 2015-10-24
      相关资源
      最近更新 更多