从另一个活动调用对话框

时间:2011-01-17 19:28:25

标签: android

我有Activity A,它使用AlertBuilder.create等定义一个对话框。这个Activity使用showDialog(dialogID)调用对话框。 dialogID在所有类/活动中声明和识别。一切都在活动A中完美运作。

我的问题是当尝试调用同一个对话框 - showDialog(dialogID)时 - 从另一个Activity(Activity B)中应用程序崩溃。有人可以帮忙吗?

如何从多个活动中调用对话框?

提前致谢。

安迪

3 个答案:

答案 0 :(得分:1)

  

我的问题是在尝试调用时   同样的对话 -   showDialog(dialogID) - 来自另一个   活动(活动B)申请   崩溃。

如何从活动B调用对话框?只是为了让你知道,你没有固定活动(所以没有 new ActivityA().showDialog(id)

你能做的是

  1. 创建一个扩展AlertDialog.Builder的类,并在构造函数中接受Context参数。您可以自定义文本,按钮和其他内容。
  2. 在您的onCreateDialog活动中,您可以实例化您的课程并在其上调用create()。您的课程可以通过任何活动访问。

答案 1 :(得分:0)

我认为如果不在新活动中挂钩类似的切入点,您就无法完成所需的工作。

showDialog(int id)

id在启动它的活动中是唯一的。因此,如果两个活动A和B都调用showDialog(1);除非有人在onDialogCreate()和onPrepareDialog方法中为它们编码了相同的代码路径,否则每个都会做一些不同的事情。因此,在原始活动的onDialogCreate中,该代码必须存在于两个活动中。有时您可以创建一个新的Dialog类型,它基于给定的上下文在内部完成所有初始化,并且只需调用show()就可以了。当上下文不再有效并且您需要解雇或显示时,通常会出现此解决方案的问题。基本上,当使用showDialog()时,它基于每个活动。

答案 2 :(得分:0)

我认为这不可能。

活动A中内置的对话框属于活动A. 无论您是将其ID存储在全局数据空间中。它不能在活动B中使用。 您必须在活动B中创建另一个对话框