在Android应用中,有一些活动有多个片段。 即使这些活动或片段不在backStack的顶部,并且从不同的服务接收通知,它们也可以运行。
当某些事件发生时,需要显示一个与用户通信的对话框。堆栈顶部的活动或片段可能没有该事件的处理程序。任何其他感兴趣的活动或片段都应该做出反应,向用户打开一个对话框。
问题是活动中的监听器和独立处理事件的片段不知道是否已经显示了相同的对话框。
判断处理程序是否应该打开对话框的最佳方法是什么? 由于此对话框对于同一事件是相同的,因此如果将其作为单个事件可能会有所帮助。
有人建议如何让对话框成为这种情况的单身人士吗?
答案 0 :(得分:1)
您不能使Dialog单音,因为Dialogs与当前视图链接。您当前的视图可能会发生变化 - 可能会从不同的活动实例(一个或多个)播放对话框。
但是你可以实现一个简单的单一类来存储所有对话框数据 - 将数据保存到onPause
并在Dialog的onCreateView
中检索它。
因此,您将获得包含所有数据的单例实例,但对话框可能会根据当前视图而有所不同。
此外,您还可以将弱链接存储到该单例类中显示的对话框中。使用这种方法,您可以检测当前是否显示的对话框。