Java if-then 语句中的变量初始化

Java variable initialization in if-then statement

我有这段代码可以通过切换按钮关闭 Wifi。我还想拥有它,这样如果用户在按下按钮之前已经打开了 Wifi,则 Wifi 会在关闭切换按钮后重新打开。这是通过 wifiON boolean 完成的。但是,由于该变量是在 if 语句的第一部分初始化的,因此它不会被 else 语句使用。我如何设置它,以便 else 语句可以从 if 语句中获取布尔值。下面是代码。

    public void airplaneClicked (View view) {
    boolean on = ((ToggleButton) view).isChecked();
    WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
    boolean wifiOn;

    if (on) {
        if (wifi.isWifiEnabled()) {
            wifiOn = true;
            Log.v("", "" + wifiOn);
            wifi.setWifiEnabled(false);
        } else {
            wifiOn = false;
            Log.v("", "" + wifiOn);
        }
    }
    else {
        if (wifiOn == true) {
            wifi.setWifiEnabled(true);
        }
    }
}

如果您在 if-else 的两个部分都需要 wifiOn 的值,请将其移至 if-else 之前。

if (wifi.isWifiEnabled()) {
    wifiOn = true;
} else {
    wifiOn = false;
}
if (on) {
    if (wifi.isWifiEnabled()) {
        Log.v("", "" + wifiOn);
        wifi.setWifiEnabled(false);
    } else {
        Log.v("", "" + wifiOn);
    }
}
else {
    if (wifiOn == true) {
        wifi.setWifiEnabled(true);
    }
}
 //Use additional boolean - wifiState

boolean wifiState = wifi.isWifiEnabled(); 
        if (on) {
                if (wifiState) {
                    wifiState = true;
                    Log.v("", "" + wifiOn);
                    wifi.setWifiEnabled(false);
                } else {
                    wifiState = false;
                    Log.v("", "" + wifiOn);
                }
            }
            else {
                if (wifiState) {
                    wifi.setWifiEnabled(true);
                }
            }
wifi.setWifiEnabled(!wifi.isWifiEnabled());