1

我有这个代码:

    List<ScanResult> vAll = null;
    WifiManager vMainWifi = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wi_fi);

        vMainWifi = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
        vAll = getWiFi();
    }   
    public void btnViewWiFI_onClick(View v) {
        TextView vTmpTextView = (TextView) findViewById(R.id.tvRetele);
        String vString = "WiFi:";
        List<String> vLista = getWiFiString();
        if (vLista != null) {
            for (int i = 0; i < vLista.size(); i++)
                vString += "\n\t" + vLista.get(i);
        }
        vTmpTextView.setText(vString);
    }
    List<ScanResult> getWiFi() {
        if (vAll != null)
            return vAll;
        if (vMainWifi.isWifiEnabled())
            return vMainWifi.getScanResults();
        else {
            vMainWifi.setWifiEnabled(true);
            return vMainWifi.getScanResults();
        }
    }
    List<String> getWiFiString() {
        List<String> vTmp = null;
        if (vAll == null)
            vAll = getWiFi();
        if (vAll != null) {
            for (int i = 0; i < vAll.size(); i++)
                vTmp.add(vAll.get(i).BSSID + ", " + vAll.get(i).SSID);
        }
        return vTmp;
    }

在布局 xml

    <TextView
        android:id="@+id/tvRetele"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="94dp" />

    <Button
        android:id="@+id/btnViewWiFI"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="145dp"
        android:layout_marginTop="233dp"
        android:onClick="btnViewWiFI_onClick"
        android:text="@string/viewWiFi" />

在清单文件中我有这个

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

如果我尝试调试它,我会得到空列表,可能是因为我收到 WiFi 网络错误,但是当我上传到手机并安装此应用程序时,当我按下按钮时会崩溃。我做错了什么?

4

2 回答 2

1

您没有在 getWiFiString() 中实例化列表 vTmp !尝试向其中添加元素时会收到 NullPointerException。

您可能需要的是:

List<String> vTmp = new ArrayList<String>();
于 2012-08-02T21:15:00.300 回答
0

阅读您的日志文件。找到它说致命的地方。找到包含您的包名称的行。它可能会说空指针异常。转到该行并确保该项目具有值且不为空。在崩溃线之前设置断点并检查所有内容的值。这个答案不仅可以解决这个问题,而且还会遇到更多问题。

If you don't see logcat goto eclipse --> window-->show view --> logcat

于 2012-08-02T21:48:01.187 回答