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

ログファイルを読みます。致命的と書かれている場所を見つけます。パッケージ名が含まれている行を見つけます。おそらくヌルポインタ例外と言うでしょう。行に移動して、アイテムに値があり、null でないことを確認します。クラッシュ行の前にブレークポイントを設定し、すべての値を確認します。これは、この問題を解決するだけでなく、さらに多くの問題を解決する答えです。

logcat が表示されない場合は、eclipse に移動します --> ウィンドウ --> ビューを表示 --> logcat

于 2012-08-02T21:48:01.187 に答える