android wifi应用程序崩溃

时间:2012-08-02 20:56:59

标签: android

我有这段代码:

    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" />

在Manifest文件中我有这个

 <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网络的错误,但当我上传到手机并安装这个应用程序时,我按下按钮时会崩溃。 我做错了什么?

2 个答案:

答案 0 :(得分:1)

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

您可能需要的是:

List<String> vTmp = new ArrayList<String>();

答案 1 :(得分:0)

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

如果你没有看到logcat goto eclipse - &gt;窗口 - &gt;显示视图 - &gt; logcat的