2015-10-05 39 views
1

我有一些活动被设计成看起来和行为像对话框(但由于小部件的限制,实际上不能成为对话框)。这些活动使用Theme.Dialog主题的扩展名在屏幕上显示为弹出窗口而不填满整个屏幕。对于较旧的API,是否有类似于FLAG_ACTIVITY_NEW_DOCUMENT的内容?

我的目标是他们会模仿对话框的外观,使他们能够在屏幕上显示任何内容,屏幕上的所有内容仍然显示在对话框后面。

在API 21中,我可以使用FLAG_ACTIVITY_NEW_DOCUMENT来实现此目的。但是,我的应用程序支持的API只有16个。我尝试了其他两个标志,但除了NEW_DOCUMENT外,其他标志都没有给出正确的外观。所有其他人最终打开我的实际应用程序背后的对话活动,然后把它打开,一旦我的活动完成()。不是一个破坏交易的人,但并不理想。

我能做些什么来让我的设计保持向后兼容的风格吗?

回答

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); 
    } 
相关问题