我知道有几个问题与这个问题非常相似,但到目前为止他们并没有帮助我。我仍然无法覆盖此AsyncTasks。 你能帮我吗?
我已经确定doInBackground()开发了一些onPostExecute()需要的类型(第一个是布尔值,第二个例子是JSON)。
除了我将AsyncTask扩展为原始类型(不确定要在此处输入内容)之外,您看到了什么吗?
这是eclipse告诉我的每个方法的错误:
Register.NetCheck类型的onPostExecute(Boolean)方法必须覆盖或实现超类型方法
并且eclipse的课程告诉我:
Register.NetCheck类型必须实现继承的抽象方法AsyncTask.doInBackground(Object ...)
AsyncTask是一种原始类型。应该是泛型类AsyncTask的引用 参数
示例1:
private class NetCheck extends AsyncTask {
@Override
protected void onPreExecute(){
super.onPreExecute();
do.something();
}
@Override
protected Boolean doInBackground (String... args){
if (do.something.worked){
return true; }
else { return false}
}
@Override
protected void onPostExecute(Boolean th){
evalute.input.boolValue();
}
}
示例2:
private class ProcessRegister extends AsyncTask {
@Override
protected void onPreExecute() {
super.onPreExecute();
show.some.dialog();
}
@Override
protected JSONObject doInBackground(String... args) {
JSONObject json = generate.some.json();
return json;
}
@Override
protected void onPostExecute(JSONObject json) {
evaluate.something();
}
}
答案 0 :(得分:1)
您的异步任务不期望返回值,因此无法识别
protected void onPostExecute(Boolean th)
请改为尝试:
private class NetCheck extends AsyncTask<String, Void, Boolean> {
@Override
protected void onPreExecute(){
super.onPreExecute();
do.something();
}
@Override
protected Boolean doInBackground (String... args){
if (do.something.worked){
return true; }
else { return false}
}
@Override
protected void onPostExecute(Boolean th){
evalute.input.boolValue();
}
}
对于第二个示例,将Boolean替换为JSONObject。尝试始终使用IDE自动为您实现这些方法,避免这样的问题。
答案 1 :(得分:1)
您应该使用类型扩展AsyncTask。见下面的例子。
public class MyTask extends AsyncTask<Void, String, Integer> {
@Override
protected Integer doInBackground(Void... params) {
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(Integer integer) {
super.onPostExecute(integer);
}
@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
}
@Override
protected void onCancelled(Integer integer) {
super.onCancelled(integer);
}
@Override
protected void onCancelled() {
super.onCancelled();
}
}
用适当的类型替换Void,String,Integer。更多信息是here。 关于Eclipse。删除并安装Android Studio。