【问题标题】: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);
}