我收到此错误“无法访问类型 Datagetter 的封闭实例。必须使用类型 Datagetter 的封闭实例(例如 x.new A(),其中 x 是 Datagetter 的实例)来限定分配。”我的代码是
public static void initializeValues
(String _NAMESPACE , String _URL , String _SOAP_ACTION ,
String _METHOD_NAME , String _PARAM_NAME , String _PARAM_VALUE)
{
NAMESPACE = _NAMESPACE ;
URL = _URL ;
SOAP_ACTION = _SOAP_ACTION ;
METHOD_NAME = _METHOD_NAME ;
PARAM_NAME = _PARAM_NAME ;
PARAM_VALUE = _PARAM_VALUE ;
TAG = "Name of log" ;
AsyncCallWS task = new AsyncCallWS();
//Call execute
task.execute();
}
异步调用WS
public class AsyncCallWS extends AsyncTask<String, Void, Void> {
protected Void doInBackground(String... params) {
Log.i(TAG, "doInBackground");
getDataFromWebservice();
return null;
}
protected void onPostExecute(Void result) {
Log.i(TAG, "onPostExecute");
// tv.setText(fahren + "° F");
}
protected void onPreExecute() {
Log.i(TAG, "onPreExecute");
// tv.setText("Calculating...");
}
protected void onProgressUpdate(Void... values) {
Log.i(TAG, "onProgressUpdate");
}
}
最佳答案
实例化异步任务的方法是static
。但是,AsyncCallWS
似乎是一个非static
内部类。非静态内部类持有对父对象的引用,因此在没有父对象的情况下无法访问。
可能你的异步任务应该被声明为static
- 通常有一个非静态的asynctask是一个编程错误。
关于java - 声明中的Android AsyncTask错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21234546/