我正在调用一个存在于不同类中的AlertDialog。之后,我使用回调方法刷新视图。但是,对话框似乎在一个单独的线程上运行,因为回调方法在之前被调用,用户在AlertDialog中而不是之后做出选择。
如何确保仅在用户做出选择后调用回调方法?
mClientManager.deleteClientConfirmationDialog ( getActivity (), id );
mCallback.refresh ();
答案 0 :(得分:0)
但是,对话框似乎在单独的线程上运行
不,它没有。
因为在用户在AlertDialog中进行选择之前调用了回调方法,而不是在
之后
在调用deleteClientConfirmationDialog()
和refresh()
之后,对话框才会显示。您可能请求将对话框显示在那里的某个位置,但所有这一切都会将消息放入队列,由主应用程序线程处理,有时在您将该线程的控制权返回到框架。
如何确保仅在用户做出选择后调用回调方法?
将逻辑放在适当的事件侦听器中。 Lance建议setOnDismissListener()
是一个合理的选择,如果您希望调用refresh()
,无论对话框如何或为何会消失。