OnProgressUpdate与OnPostExecute无法重写,请求技术协助
解决Android Studio中onPostExecute的“Method does not override method from superclass”问题
兄弟,我之前也踩过这个坑!你说的这些情况我都遇见过,给你几个实打实的排查步骤,应该能解决:
先盯紧AsyncTask的泛型声明!
这是最容易踩的坑!AsyncTask的泛型是<Params, Progress, Result>,onPostExecute的参数类型必须和第三个泛型Result完全对齐。举个例子:
如果你声明的是class MyAsyncTask extends AsyncTask<String, Integer, String>,那onPostExecute必须接收String类型的参数,不能随便换成Integer或者Void,哪怕你觉得逻辑上不需要参数,也要把泛型的Result设成Void,然后方法参数写Void result。严格匹配方法签名的每一处细节
父类的onPostExecute方法签名是固定的,差一点都不行:- 访问修饰符必须是
protected,不能写成public或者private - 返回值必须是
void,别瞎改成Boolean或者其他类型 - 参数只能有一个,而且类型必须和泛型Result完全一致
正确的示例(比如泛型是Void,Void,Void的情况):
@Override protected void onPostExecute(Void result) { super.onPostExecute(result); // 这下super就能正常识别了 // 你的业务逻辑写在这 }- 访问修饰符必须是
检查AsyncTask的导入是否正确
别不小心导入了第三方库的AsyncTask!一定要确保是android.os.AsyncTask,有些第三方框架会自己封装AsyncTask,方法签名和系统的不一样,自然会提示不重写父类方法。清缓存重启,让Android Studio“清醒”一下
有时候IDE的缓存会抽风,明明代码对了还报错。试试这两步:- 菜单栏点
File -> Invalidate Caches...,选Invalidate and Restart重启IDE - 或者先
Build -> Clean Project,再Build -> Rebuild Project重新构建
- 菜单栏点
之前我就是泛型写错了,参数看起来是对的但其实和泛型不匹配,折腾了半天,改完泛型立马就好了!你按这个顺序排查试试,应该能解决。
内容的提问来源于stack exchange,提问作者Christopher
相关产品推荐
相关产品推荐

