我是Android的半新手,我不确定我是否看到了使用Android的非模态对话框的“大图”。我能够提供多种类型的对话框,但是在点击“确定”后我不知道如何使用结果。很明显,当显示一个对话框时,调用UI任务会以愉快的方式进行。显然,任何非平凡对话的目的都是从用户那里获取一些信息以便进一步处理,但主线程已经开始了。那么如何使用对话框数据的结果来实际执行某些操作呢?
我能看到这样做的唯一方法是将我的结果处理放在“确定”按钮的onclick处理程序中,但这对我的思维方式来说似乎相当尴尬和笨拙。但是,处理对话的“通常和习惯”方式是否会产生?有没有更好的办法?还是我大量遗漏了什么?
作为一个具体的例子,假设我想在列表视图中显示文件列表并选择一个要删除的文件。我是否将删除代码放在onclick处理程序中?
答案 0 :(得分:3)
是的,这是使用Android对话框的“通常和习惯”方式。您可以在侦听器中处理结果,请参阅文档中dialogs guide或date picker dialog sample中的示例。
当您使用活动创建对话框时(您必须设置活动的proper主题),您可以在对话框活动中的侦听器中进行处理。或者,您可以将值返回到父活动,并在onActivityResult
回调中处理它们。
您在侦听器中运行的代码应该相当简短快速,因为它在主线程上运行。永远不要让用户等待!如果处理过程非常耗时,请在后台进行。
Android中的模态与非模态(无模式)对话框的一个注释。默认情况下,所有对话框(以及显示为对话框的活动)都是模态的。您可以通过设置适当的窗口标志来创建无模式对话框(以及显示为对话框的活动)(有关详细信息,请参阅this问题和答案)。