[英]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);
}
}
}
wifi.setWifiEnabled(!wifi.isWifiEnabled());
如果在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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.