You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio添加网络连接检测代码后出现方法重写/实现错误求助

解决Android Studio网络检测代码报错:method does not override or implement a method from a supertype

兄弟,你遇到的这个报错其实是新手刚接触Android开发时很容易踩的坑,我帮你拆解下原因和解决办法:

这个错误提示的核心意思是:你用了@Override注解,但你写的方法并没有重写父类(比如AppCompatActivity)里的任何方法——要么是不该加这个注解的地方乱加了,要么是方法签名写错了。另外你提到的NetworkInfo类,在Android API 29(Android 10)之后已经被官方废弃了,就算勉强用也会有兼容性问题,这也是你可能踩的另一个坑。

下面给你一步步解决的方案:

第一步:去掉错误的@Override注解

如果你是自己写了一个网络检测的自定义方法(比如叫checkNetwork()),那这个方法不是系统父类自带的,绝对不能加@Override。比如你之前可能写了这样的代码:

@Override
public void checkNetwork() {
    // 你的网络检测代码
}

直接把@Override删掉就好,这个注解只能用在真正重写父类方法的场景(比如onCreate()这种生命周期方法)。

第二步:用新API替代废弃的NetworkInfo实现网络检测

因为NetworkInfo已经被弃用,推荐用Android官方推荐的ConnectivityManager新API来做网络检测,兼容性更好。下面是完整的示例代码:

1. 先在AndroidManifest.xml中添加网络权限

<!-- 获取网络状态权限 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 访问互联网权限(如果需要加载网络内容) -->
<uses-permission android:name="android.permission.INTERNET" />

2. 在MainActivity中实现正确的网络检测逻辑

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 检测网络状态
        if (isNetworkAvailable(this)) {
            // 网络可用,继续你的WebView加载逻辑
            // WebView myWebView = findViewById(R.id.w...);
            // 这里补充你的WebView代码
        } else {
            // 网络不可用,提示用户
        }
    }

    // 自定义网络检测方法,不需要加@Override
    private boolean isNetworkAvailable(Context context) {
        ConnectivityManager connectivityManager = 
            (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        
        if (connectivityManager == null) {
            return false;
        }

        // 获取当前活跃网络
        Network activeNetwork = connectivityManager.getActiveNetwork();
        if (activeNetwork == null) {
            return false;
        }

        // 判断网络是否具备上网能力
        NetworkCapabilities networkCapabilities = connectivityManager.getNetworkCapabilities(activeNetwork);
        return networkCapabilities != null && (
            networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ||
            networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) ||
            networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)
        );
    }
}

再复盘下你的问题根源

大概率是你给自己写的自定义网络检测方法错误地加了@Override注解,而这个方法并不是AppCompatActivity父类中的方法,所以编译器直接报错。另外用了废弃的NetworkInfo,就算解决了注解问题,后续也会有警告甚至运行时兼容性问题,所以直接换成新API更稳妥。

如果还有WebView相关的问题,随时说哈!

内容的提问来源于stack exchange,提问作者Ahmad Abdu Zaky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:24:09