强制方法在* AlertDialog之后运行*

时间:2013-12-04 14:22:24

标签: android multithreading dialog

我正在调用一个存在于不同类中的AlertDialog。之后,我使用回调方法刷新视图。但是,对话框似乎在一个单独的线程上运行,因为回调方法在之前被调用,用户在AlertDialog中而不是之后做出选择。

如何确保仅在用户做出选择后调用回调方法?

mClientManager.deleteClientConfirmationDialog ( getActivity (), id );
mCallback.refresh ();

1 个答案:

答案 0 :(得分:0)

  

但是,对话框似乎在单独的线程上运行

不,它没有。

  

因为在用户在AlertDialog中进行选择之前调用了回调方法,而不是在

之后

在调用deleteClientConfirmationDialog()refresh()之后,对话框才会显示。您可能请求将对话框显示在那里的某个位置,但所有这一切都会将消息放入队列,由主应用程序线程处理,有时在您将该线程的控制权返回到框架。

  

如何确保仅在用户做出选择后调用回调方法?

将逻辑放在适当的事件侦听器中。 Lance建议setOnDismissListener()是一个合理的选择,如果您希望调用refresh(),无论对话框如何或为何会消失。