2012-04-05 89 views
0

第一次启用Wifi,然后禁用它一切都很好,但如果我尝试重新启用Wifi后(立即或等待移动数据再次连接)它会抛出一个NullPointerException并强制关闭。NullPointerException禁用WiFi状态并尝试再次启用

private void toggleWifi(){ 

    if (wifi == 0){ 
     wifiManager.setWifiEnabled(true); 
     scanOnly = wifiManager.createWifiLock(WifiManager.WIFI_MODE_SCAN_ONLY, "scanOnly"); 
     scanOnly.acquire(); 

     bWifi.setText("Turn Wifi OFF"); 

     List<ScanResult> wifiResults = wifiManager.getScanResults(); 

     StringBuilder sb = new StringBuilder("Scan Results:\n");    
     sb.append("-----------------------\n"); 

     for (ScanResult r : wifiResults) { 
      sb.append(r.SSID + " " + r.level + " dBM\n"); 
     } 

     tvWifi.setText(sb.toString()); 

     wifi = 1; 

    } else { 
     scanOnly.release(); 
     wifiManager.setWifiEnabled(false); 

     bWifi.setText("Turn WiFi ON"); 

     tvWifi.setText(""); 

     wifi = 0; 
    } 

} 

的错误是在这条线:

for (ScanResult r : wifiResults) { 
    sb.append(r.SSID + " " + r.level + " dBM\n"); 
} 

回答

0

您是否尝试过调试?目前wifiResults可能为空

+0

看来问题就在这里。但是为什么我第二次运行它而不是第一次? – Rory 2012-04-05 01:58:44

+0

@Rory我想,你应该等一段时间才能找到无线网络 – 2012-04-05 06:24:31

+0

我只是做了一点错误检查,现在解决这个问题。感谢您的输入! – Rory 2012-04-05 21:19:21