Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.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
Android AsyncTask不接受double类型的数据_Android_Multithreading_Android Asynctask - Fatal编程技术网

Android AsyncTask不接受double类型的数据

Android AsyncTask不接受double类型的数据,android,multithreading,android-asynctask,Android,Multithreading,Android Asynctask,我在代码中创建了一个AsyncTask,如下所示,以便通过onPublishProgress发布的值的类型为double,但在运行时,我收到下面发布的logCat错误 请帮我找出我出错的原因 代码: this.mbtnShowComp.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mATComputations =

我在代码中创建了一个AsyncTask,如下所示,以便通过onPublishProgress发布的值的类型为double,但在运行时,我收到下面发布的logCat错误

请帮我找出我出错的原因

代码

this.mbtnShowComp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           mATComputations = new mATComputations();
            mATComputations.execute();
        }
    });

private class mATComputations extends AsyncTask <Void, Double, Void> {

    private int mI = 0;
    private double mResult;


    @Override
    protected Void doInBackground(Void... params) {
        Log.w(TAG, CSubTag.msg("mATComputations.doInBackground"));

        while (!isCancelled()) {
            this.mResult += (((++this.mI)/10) * (50));
            publishProgress(this.mResult);
        }
        return null;
    }

    @Override
    protected void onProgressUpdate(Double... values) {
        super.onProgressUpdate(values);
        Log.w(TAG, CSubTag.msg("mATComputations.onProgressUpdate"));

        mtvComputations.setText(""+(values[0]));
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        Log.w(TAG, CSubTag.msg("mATComputations.onPostExecute"));
    }

    @Override
    protected void onCancelled() {
        super.onCancelled();
        Log.w(TAG, CSubTag.msg("mATComputations.onCancelled"));
    }
}
这将帮助您:

基本上,您的
mATComputations
类和引用名称可能有错误(它们是否相同?),或者您将
mATComputations
变量声明为
AsyncTask
,而不是您自己的类

请重命名您的
matcalculations
类,使其具有正确的大写名称(例如atcalculations)

实例化和执行任务应如下所示:


第1902行是什么?@EricB。它是私有类mATComputations扩展异步任务
FATAL EXCEPTION: AsyncTask #2
    01-14 10:59:47.220 953-1958/com.example.com.bt_11 E/AndroidRuntime: Process: com.example.com.bt_11, PID: 953
    01-14 10:59:47.220 953-1958/com.example.com.bt_11 E/AndroidRuntime: java.lang.RuntimeException: An error occured while executing doInBackground()
    01-14 10:59:47.220 953-1958/com.example.com.bt_11 E/AndroidRuntime:     at android.os.AsyncTask$3.done(AsyncTask.java:300)
    01-14 10:59:47.220 953-1958/com.example.com.bt_11 E/AndroidRuntime:     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
    01-14 10:59:47.220 953-1958/com.example.com.bt_11 E/AndroidRuntime:     at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
    01-14 10:59:47.220 953-1958/com.example.com.bt_11 E/AndroidRuntime:     at java.util.concurrent.FutureTask.run(FutureTask.java:242)
    01-14 10:59:47.220 953-1958/com.example.com.bt_11 E/AndroidRuntime:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
    01-14 10:59:47.220 953-1958/com.example.com.bt_11 E/AndroidRuntime:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
    01-14 10:59:47.220 953-1958/com.example.com.bt_11 E/AndroidRuntime:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
    01-14 10:59:47.220 953-1958/com.example.com.bt_11 E/AndroidRuntime:     at java.lang.Thread.run(Thread.java:818)
    01-14 10:59:47.220 953-1958/com.example.com.bt_11 E/AndroidRuntime:  Caused by: java.lang.ClassCastException: java.lang.Object[] cannot be cast to java.lang.Void[]
    01-14 10:59:47.220 953-1958/com.example.com.bt_11 E/AndroidRuntime:     at com.example.com.bt_11.ActConnect2$mATComputations.doInBackground(ActConnect2.java:1902)
    01-14 10:59:47.220 953-1958/com.example.com.bt_11 E/AndroidRuntime:     at android.os.AsyncTask$2.call(AsyncTask.java:288)
    01-14 10:59:47.220 953-1958/com.example.com.bt_11 E/AndroidRuntime:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    01-14 10:59:47.220 953-1958/com.example.com.bt_11 E/AndroidRuntime:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
    01-14 10:59:47.220 953-1958/com.example.com.bt_11 E/AndroidRuntime:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
    01-14 10:59:47.220 953-1958/com.example.com.bt_11 E/AndroidRuntime:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
    01-14 10:59:47.220 953-1958/com.example.com.bt_11 E/AndroidRuntime:     at java.lang.Thread.run(Thread.java:818) 
ATComputations mATComputations = new ATComputations();
mATComputations.execute();