2016-04-03 42 views
1

在android应用程序中,有多个片段的活动。 即使这些活动或片段不在backStack的顶部,并且接收来自不同服务的通知,这些活动或片段仍可以运行。如何制作一个sington对话框

当发生某些事件时,需要显示一个对话框与用户进行通信。堆栈顶部的活动或片段可能没有该事件的处理程序。任何其他感兴趣的活动或片段都应该向用户打开一个对话框。

问题是监听器中的活动和片段独立处理事件不知道是否已经有相同的对话框显示。

什么是告诉处理程序是否应该打开对话框的最佳方式? 由于这个对话框对于同一个事件是相同的,所以它可能会有帮助,如果它可以作为一个单身人士。

任何人都有建议如何使对话成为这种情况的单身人士?

回答

1

由于对话框与当前视图链接,因此无法制作Dialog singletone。而你目前的观点可能会改变 - 对话可能会从活动的不同实例(一个或多个)中播种。

但是,您可以实现一个简单的singletone类来存储所有对话框数据 - 将数据保存到并在Dialog的onCreateView中检索它。

因此,您将获得包含所有数据的单例实例,但根据当前视图,对话框可能会有所不同。

此外,您可以存储一个链接到该singletone类中显示的对话框。使用这种方法,您可以检测到您的对话框是否显示。

+0

谢谢Atrem!单个数据实例不是问题。与一个活动的上下文关联的对话框是。在这种情况下,如果多个活动或片段收到显示对话框的事件,则很难确定是否显示对话框。也许使用singleTask或singleInstance开展一项活动可能有所帮助,有什么想法? – lannyf

+0

我建议将链接保存到单个实例类中的对话框。在那个例子中,创建'ensureShowDialog(Context context)'方法。该方法将检查当前是否显示对话框。如果是,您可以显示对话框。在另一个CASR中,您可以将新数据传递给对话框。 –

相关问题