Android:AsyncTask Object[] 不能在 doInBackground 中强制转换
Posted
技术标签:
【中文标题】Android:AsyncTask Object[] 不能在 doInBackground 中强制转换【英文标题】:Android: AsyncTask Object[] cannot be cast in 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<Void, Void, String>
见这里:***.com/questions/34399979/…
喜欢AsyncTaskRunner = new AsyncTaskRunner<Void, Void, String>();
?同样的问题。
这样:AsyncTaskRunner<Void, Void, String> =
【参考方案1】:
好的,奇怪的是,如果我这样称呼它,它会起作用:
AsyncTask<Void, Void, String> asyncTaskRunner = new AsyncTaskRunner();
asyncTaskRunner.execute();
【讨论】:
以上是关于Android:AsyncTask Object[] 不能在 doInBackground 中强制转换的主要内容,如果未能解决你的问题,请参考以下文章
API 级别 11 之前的 AsyncTask.executeOnExecutor()
AsyncTask onCancelled(Object) 从未在 asyncTask.cancel(true) 之后调用;
Android多线程的四种方式:Handler、AsyncTask、ThreadPoolExector、IntentService