如何提高一个DialogFragment在另一个之上?

假设我有几个对话框片段,可以显示响应可按任意顺序到达的消息和事件。 通常情况下,显示的最后一个对话框将显示在最上面。 有没有办法现有的对话框中显示对话框片段,或者显示对话框片段后更改它们的z顺序?

我的应用程序一次显示多个对话框应该是非常罕见的,但可能会发生。 有一个特定的对话框应该始终显示在最前面。

Solutions Collecting From Web of "如何提高一个DialogFragment在另一个之上?"

一个对话框创build一个应用程序子窗口。 Android的窗口pipe理器( WindowManagerService )根据窗口的types自动计算窗口的z顺序,并将其存储在WindowState的mLayer字段中。 内部的Android类有时可以访问这个字段并改变窗口的z顺序,但是这个API没有公开给Android SDK。 所以看来,影响对话框z顺序的唯一方法是重新创build它。

我上面写的所有东西只是对Android源代码进行简短调查的结果,所以我可能是错的。 也许有一些黑客的方式来做你想用reflection和访问私人领域和方法。 但是我不确定尝试这么做是个好主意。 在我看来,只有一个单一的对话甚至活动,并在其中pipe理片段会更好。