Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.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 Can';t在未调用Looper.prepare()的线程内创建处理程序_Java_Android_Android Asynctask - Fatal编程技术网

Java Can';t在未调用Looper.prepare()的线程内创建处理程序

Java Can';t在未调用Looper.prepare()的线程内创建处理程序,java,android,android-asynctask,Java,Android,Android Asynctask,我正在使用AsyncTask调用YahooWeatherAPI。代码如下: } 调试代码后,我发现yahooAPI调用成功,我可以在queryyahowather函数中看到XML响应。但一旦此函数的执行完成,就会引发异常: 无法在未调用Looper.prepare()的线程内创建处理程序。 请帮助我。从queryyahoweather方法中删除所有Toast,因为此方法是从AsyncTask的doInBackground(Object…params)调用的,并且您不能从后台线程访问Toast

我正在使用AsyncTask调用YahooWeatherAPI。代码如下:

}

调试代码后,我发现yahooAPI调用成功,我可以在
queryyahowather
函数中看到XML响应。但一旦此函数的执行完成,就会引发异常:
无法在未调用Looper.prepare()的线程内创建处理程序。


请帮助我。

queryyahoweather
方法中删除所有Toast,因为此方法是从
AsyncTask
doInBackground(Object…params)
调用的,并且您不能从后台线程访问Toast(也是一个Ui元素)之类的Ui元素

注意:如果您想知道背景中发生了什么,请使用而不是Toast's

编辑:

将doInBackground更改为:

@Override
protected String doInBackground(Object... params) {
    // TODO Auto-generated method stub
    String strresult="";
    try {
        Log.i("my label", "entering in doInBackground");
        Log.i("params[0]", params[0].toString());
         strresult= QueryYahooWeather(params[0].toString());
         Log.i("strresult result ::: ", strresult);

    } catch (Exception e) {
        Log.i("my label", e.toString());
        return null;
    }
 return strresult;
}
你在打电话吗

Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG)
            .show();
queryyahoweather
中,它正在
doInBackground
中调用


您不能从后台线程调用
UI
调用。

谢谢您的回复。通过从该函数中删除祝酒词,错误消失了。但从
queryyahoweather
返回后,其结果不会返回,而是在doInBackground方法中返回null值。有什么想法吗?@NidaSulheri:put a log
log.v(标记“queryyahoweather::”+qResult)
返回qResultqueryyahoweather
中选择code>并检查您是否在qResult中获得值我在调试中选择了
qResult
,它包含了整个结果XML响应。我想您还可以将
受保护对象doInBackground(Object…params)
的返回类型更改为
受保护字符串doInBackground(Object…params)
我已将doInBackground的返回类型更改为String,但仍然返回null值:(感谢您的响应。通过从该函数中删除toast,错误已经消失。但是从queryyahowear返回后,其结果不会返回,而是在doInBackground方法中返回null值。有什么想法吗?
Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG)
            .show();