(我知道这个问题有很多不同的问题,感谢您考虑我的具体情况)。
我正在实施第三方库。其中一种方法需要用户输入,此方法的返回值需要是用户的响应。具体来说,此方法需要弹出一个警告对话框。用户将有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();
}
}
(在对话框中按钮的OnClickListeners上从onClick调用setRetValue。)