【问题标题】:Android: AsyncTask Object[] cannot be cast in doInBackgroundAndroid:AsyncTask Object[] 不能在 doInBackground 中强制转换
【发布时间】:2021-06-25 08:48:54
【问题描述】:

所以,我正在尝试运行最简单的 AsyncTask:它不接受参数,它只是运行一个函数,获取结果字符串并显示 is。无论我尝试什么,我都会收到此错误:

java.lang.ClassCastException: java.lang.Object[] cannot be cast to java.lang.Void[] at (...)$AsyncTaskRunner.doInBackground

异步任务:

    private class AsyncTaskRunner extends AsyncTask<Void, Void, String> {

        @Override
        protected void onPreExecute() {
            resultText.setText("");
            progressBar.setVisibility(View.VISIBLE);
        }

        @Override
        protected String doInBackground(Void... params) {
            return "test";
        }

        @Override
        protected void onPostExecute(String result) {
            progressBar.setVisibility(View.GONE);
            resultText.setText(result);
        }
    }

这就是我所说的:

        buttonCalculate.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if (AsyncTaskRunner != null) {
                    AsyncTaskRunner.cancel(true);
                }

                AsyncTaskRunner = new AsyncTaskRunner();
                AsyncTaskRunner.execute();
            }
        });

我在这里做错了什么?

【问题讨论】:

  • 更改:AsyncTaskRunner AsyncTaskRunner&lt;Void, Void, String&gt;
  • 喜欢AsyncTaskRunner = new AsyncTaskRunner&lt;Void, Void, String&gt;();?同样的问题。
  • 这样:AsyncTaskRunner&lt;Void, Void, String&gt; =

标签: java android android-asynctask


【解决方案1】:

好的,奇怪的是,如果我这样称呼它,它会起作用:

AsyncTask<Void, Void, String> asyncTaskRunner = new AsyncTaskRunner();
asyncTaskRunner.execute();

【讨论】:

    猜你喜欢
    • 2013-12-25
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多