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

时间:2015-02-13 16:30:40

标签: java android if-statement wifi

我有这个代码,假设通过切换按钮关闭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);
        }
    }
}

3 个答案:

答案 0 :(得分:1)

wifi.setWifiEnabled(!wifi.isWifiEnabled());

答案 1 :(得分:0)

如果你在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);
    }
}

答案 2 :(得分:0)

 //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);
                }
            }