我已经阅读了很多关于这个主题的帖子,但是没有什么对我有用(或者没有我想要的效果) .
我有一个应用程序,登录后启动后台服务(Service类的实现) . 此服务与服务器同步,如果有新订单,则会创建通知 .
到目前为止,一切都很好,我有通知和Toast消息 . 但是,我希望有一个对话框,通知用户新订单 .
据我所知,您可以从服务中启动一个活动,该活动显示对话框 . 这有效,但活动从当前活动堆栈开始并显示对话框 . 我有一个没有附加视图的活动,但是它在黑色背景上正确显示了对话框 .
我想要的是在当前活动上显示对话框,导致实际背景(运行活动)淡出并显示对话框 .
这有点可能吗?
谢谢,菲利普
5 回答
我非常高度,强烈建议您不要这样做(这违反了Android设计和UI指南) . 通知是完成您正在做的事情的首选方式(听起来好像您已经完成了) .
话虽这么说,如果你必须这样做,我建议只使用Dialog主题活动 . 这样您就不必启动单独的对话框 . 有关如何执行此操作,请参阅http://developer.android.com/guide/topics/ui/themes.html#ApplyATheme .
只有在系统警报对话框中,我们才能显示来自服务的对话框 . 因此,将
TYPE_SYSTEM_ALERT
窗口布局参数设置为Dialog,如下所示:但是,它需要SYSTEM_ALERT_WINDOW权限 . 因此,不要忘记在Manifest文件中添加此权限 .
你可以从学习如何创建一个看起来像一个对话框的活动开始(没有 Headers 栏,透明背景,“浮动”效果等),不,你不能只是在没有激活的情况下启动一个对话框
您无法显示对话框 . 但是,您可以通过膨胀自定义视图来改变方式,以便在满足某些条件时在屏幕上显示对话框 .
不,你不能劫持不是“你的”活动,并命令它显示对话框 . 您开始自己的活动的方法是经典的 .