我有Activity A,它使用AlertBuilder.create等定义一个对话框。这个Activity使用showDialog(dialogID)调用对话框。 dialogID在所有类/活动中声明和识别。一切都在活动A中完美运作。
我的问题是当尝试调用同一个对话框 - showDialog(dialogID)时 - 从另一个Activity(Activity B)中应用程序崩溃。有人可以帮忙吗?
如何从多个活动中调用对话框?
提前致谢。
安迪
答案 0 :(得分:1)
我的问题是在尝试调用时 同样的对话 - showDialog(dialogID) - 来自另一个 活动(活动B)申请 崩溃。
如何从活动B调用对话框?只是为了让你知道,你没有固定活动(所以没有 new ActivityA().showDialog(id)
。
你能做的是
AlertDialog.Builder
的类,并在构造函数中接受Context
参数。您可以自定义文本,按钮和其他内容。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中创建另一个对话框