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