Android:MainActivity实现AsyncResponse接口时访问权限不足错误
解决AsyncTask回调的编译错误 & 获取结果到MainActivity
Hey there! Let's tackle your problem step by step. First, that compile error is a straightforward access modifier issue—here's what's going on and how to fix it:
错误原因解析
接口AsyncResponse中的processFinish方法默认是public的(Java接口里的所有方法默认都是public abstract)。而你在MainActivity中实现这个方法时,没有添加public修饰符,默认是包级访问权限,这比接口方法的权限更弱,Java不允许这种"降低访问权限"的实现,所以编译器报错了。
修复代码
只需要给MainActivity里的processFinish方法加上public修饰符即可:
修改后的MainActivity关键代码
@Override public void processFinish(ArrayList<String> output){ // 现在你可以在这里拿到AsyncTask返回的ArrayList了 // 比如做验证操作: if(output != null && !output.isEmpty()){ Log.d("MainActivity", "获取到的内容行数:" + output.size()); // 传递给其他类处理,比如: // SomeOtherClass.handleHosts(output); } }
额外小提示(针对新手)
- 确保
AsyncResponse接口的包路径正确,fetchHosts类能正确引用到它 - 从API Level 30开始,
AsyncTask已经被官方弃用了,如果是新项目,更推荐使用Kotlin协程或者OkHttp + 线程池来做网络请求,但如果你是在学习旧的Android开发模式,当前的方案是没问题的 - 网络请求别忘了在
AndroidManifest.xml中添加权限:
<uses-permission android:name="android.permission.INTERNET" />
内容的提问来源于stack exchange,提问作者mmotti
相关产品推荐
相关产品推荐

