我想從一個類到另一個無線的WiFi的Scanresults。Android的監視器說:嘗試調用空對象的接口方法'int java.util.List.size()'參考
這是我的第一類:
public class WifiReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context ctx, Intent intent) {
// Wenn Hardware scan durchzogen wurde (wegen -->SCAN_RESULTS_AVAILABLE_ACTION)
String wifiList1;
wifiList = mainWifi.getScanResults();
wifiList1=wifiList.toString();
Toast.makeText(ctx, "Scan für AP Umgebung fertig", Toast.LENGTH_SHORT).show();
Log.v("onReceive","ausgeführt");
Log.v("ScanResults",wifiList1);
}
public List<ScanResult> getWifiList(){
return wifiList;
}
在這裏,這個是其他類,在這裏我想從getScanResults(),這我在這裏節省wifilist,你可以看到使用我的數據。
public StringBuilder getAParound(){
StringBuilder sb = new StringBuilder();
DemoApp wf2 = new DemoApp();
DemoApp.WifiReceiver wf = wf2.new WifiReceiver();
for (int i = 0; i< wf.getWifiList().size(); i++) { // At this line Android Monitor says Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
sb.append(Integer.toString(i + 1) + ". ");
sb.append(wf.getWifiList().get(i).toString());
Log.v("getAParound","ausgeführt");
}
return sb;
}
我可以看到在Log.v("ScanResults",wifiList1);
沒有任何問題的結果。
有人可以幫我嗎?
問題是與getWifiList.size();您首先創建一個新的WifiReceiver,並嘗試在未初始化時讀取列表中的數據。你應該在接收數據時讀取數據和/或在WifiReceiver中將''wifiList = new ArrayList()<>;'初始化爲一個字段。這是我可以從你的代碼片段中讀取的。 – aborocz
謝謝你的回答!未初始化意味着什麼?使用wifiList = mainWifi.getScanResults();它沒有完成?我很困惑。你能寫一部分代碼嗎? –
@Okey該行會執行此操作,但尚未調用'onReceive()',所以'wifiList'仍然爲空。 – Andreas