java - 声明中的Android AsyncTask错误

标签 java android android-asynctask

我收到此错误“无法访问类型 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/

相关文章:

java - Netflow 记录无法获取八位字节 (jnca)

java - 如何获取 View 的可绘制名称

java - 控制 CLASSPATH 中 Java 类的加载

java - Android连续获取进程输出

java - 按钮不执行正确的命令[编辑]

android - 图像加载期间的多线程问题

java - 检查字节数组中的字节是否为 Unicode

java - 如何改变TextView的最大长度?

android - otto eventbus for android 在发布版本中表现不同

android - Android中的实用类、AsyncTask、松耦合请指教