Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将Arraylist从AsyncTask返回到UI线程_Java_Android_Arraylist_Android Asynctask_Android Webview - Fatal编程技术网

Java 如何将Arraylist从AsyncTask返回到UI线程

Java 如何将Arraylist从AsyncTask返回到UI线程,java,android,arraylist,android-asynctask,android-webview,Java,Android,Arraylist,Android Asynctask,Android Webview,我需要从AsyncTask中返回Arraylist of Arraylist或在AsyncTask中设置webview的帮助。我试图在AsyncTask中设置webview,但出现了一个错误,告诉我必须在UI线程中进行设置。 然后,我尝试将arraylist从AsyncTask返回到我的UI线程,但这也不起作用 这是我收到的错误: Throwable:警告:在线程“AsyncTask#3”上调用了WebView方法。必须在UI线程上调用所有WebView方法。WebView的未来版本可能不支持在

我需要从AsyncTask中返回Arraylist of Arraylist或在AsyncTask中设置webview的帮助。我试图在AsyncTask中设置webview,但出现了一个错误,告诉我必须在UI线程中进行设置。 然后,我尝试将arraylist从AsyncTask返回到我的UI线程,但这也不起作用

这是我收到的错误:

Throwable:警告:在线程“AsyncTask#3”上调用了WebView方法。必须在UI线程上调用所有WebView方法。WebView的未来版本可能不支持在其他线程上使用

Oncreate() ---->调用我的AsyncTask,然后用task.execute启动它 AsyncTask本身将在准备就绪时执行onPostExecute(),然后它将不返回任何内容,因为它是空的

代码块1

            public void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.tab2);
                    ...
                    ...
                    queriesAsync task = new queriesAsync();
                    task.execute(new String[] { DatabasePath });
                    ...
代码块2

            private class queriesAsync extends AsyncTask<String, Void, ArrayList> {
            @Override
            protected ArrayList doInBackground(String... pathToDB) {
                ///Do something
                return ArrayList;
            }

            @Override
                protected void onPostExecute (ArrayList result){
                // return?
                }
            }
私有类queryAsync扩展了AsyncTask{
@凌驾
受保护的ArrayList doInBackground(字符串…pathToDB){
///做点什么
返回数组列表;
}
@凌驾
受保护的void onPostExecute(ArrayList结果){
//返回?
}
}

我敢打赌您没有使用
AsyncTask
onPostExecute()
,它在
doInBackground()完成后在UI
线程上运行。当
doInBackground()
完成时,它会将所需结果返回到运行在UI
线程上的
onPostExecute()
。在这里,您可以随心所欲地操作
UI
组件。

这说明了如何使用它,至少可以为您的问题添加一些代码!嗨,我用的是onPostExecute(),但那是一个viod函数,对吗?你说的“void函数”是什么意思?受保护的void onPostExecute()当我试图将其更改为其他void函数时,它不喜欢是的,问题是什么?它从
doInBackground()
接收结果,并在UI
线程上运行。