(我知道这个问题已经以多种不同的方式提出,感谢您考虑我的具体情况)。
我正在实施第 3 方库。其中一种方法需要用户输入,该方法的返回值需要是用户的响应。具体来说,这个方法需要弹出一个警告对话框。用户将有 3 个按钮可供选择,并且此方法的返回值必须是标识用户单击的按钮的 int。
我得到这个工作的唯一方法是从 AsyncTask 调用这个警报方法,然后从那里调用 runOnUIThread 来弹出警报,然后等待响应。我被卡住的地方是从 UI 线程调用此警报方法的情况。在这种情况下是否有类似的工作来等待响应?
这就是我的代码当前的样子……只要从 AsyncTask 调用此方法,我就可以开始了。但是,我需要能够从 UI 线程调用它。
public int getInput(final Object [] args)
{
getActivity().runOnUiThread(new Runnable(){
@Override
public void run()
{
buildDialog(args).show();
}
});
try
{
synchronized(this)
{
wait();
}
}
catch (Exception ex)
{
return 0;
}
return m_Result;
}
public void setRetValue(int result)
{
m_Result = result;
synchronized(this)
{
notify();
}
}
(setRetValue 从对话框中按钮的 OnClickListeners 中的 onClick 调用。)