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

Android代码报错:Expression expected及网络判断代码问题求助

排查并修正你的Android代码语法错误

嘿,我一眼就瞅到问题所在了——这段代码的语法报错完全是因为方法嵌套定义在搞鬼,咱们一步步把它理顺:

错误核心原因

你在else if (id == R.id.nav_videovorschlag)的代码块里直接写了public boolean isOnline()方法,Java语法绝对不允许在一个方法的内部代码块里嵌套定义另一个方法,这就是编辑器抛出'; Expression expected | public boolean错误的根源。

修正步骤

1. 把网络判断方法移到类级别

先把isOnline()方法从else if块里抽出来,放到你的Activity/Fragment的类成员位置(和onCreate()、onNavigationItemSelected()这类方法同级),而且因为是内部使用,用private修饰更合适:

// 放在你的Activity/Fragment类中,和其他成员方法同级
private boolean isOnline() {
    ConnectivityManager conMgr = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = conMgr.getActiveNetworkInfo();
    // 优化判断逻辑:直接返回在线状态的布尔值
    return netInfo != null && netInfo.isConnected() && netInfo.isAvailable();
}

2. 在else if块中调用这个方法

回到else if代码块里,调用抽出来的isOnline()方法,再处理离线/在线的逻辑:

else if (id == R.id.nav_videovorschlag) {
    // 调用网络状态判断方法
    if (!isOnline()) {
        // 处理离线情况:弹出对话框
        Dialog offlineDialog = new Dialog(this);
        offlineDialog.setContentView(R.layout.onlinepopup);
        ImageButton internetok = (ImageButton) offlineDialog.findViewById(R.id.internetok);
        
        // 补充按钮点击逻辑(示例)
        internetok.setOnClickListener(v -> {
            offlineDialog.dismiss();
        });
        
        offlineDialog.show();
    } else {
        // 在线时执行你的业务逻辑,比如跳转到视频推荐页面
        // startActivity(new Intent(this, VideoVorschlagActivity.class));
    }
}

额外注意事项

  • 别忘了在AndroidManifest.xml中添加网络状态权限:
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
  • 如果你的APP目标SDK >=29,NetworkInfo已经被标记为过时,建议改用新的网络状态判断方式:
    @RequiresApi(api = Build.VERSION_CODES.M)
    private boolean isOnline() {
        ConnectivityManager conMgr = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
        Network network = conMgr.getActiveNetwork();
        if (network == null) return false;
        
        NetworkCapabilities capabilities = conMgr.getNetworkCapabilities(network);
        return capabilities != null && 
               (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) || 
                capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR));
    }
    

内容的提问来源于stack exchange,提问作者Jere

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:27:17