1

(我知道这个问题已经以多种不同的方式提出,感谢您考虑我的具体情况)。

我正在实施第 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 调用。)

4

0 回答 0