2012-08-02 122 views
1

我有这样的代码: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" /> 

清单文件,我有这个

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

+0

显示错误消息或点将从你的问题可以停靠。它在logcat中,它将是红色的。找到它并选择它并尽快将其发布到该主板。 – 2012-08-02 21:44:04

+0

更重要的是,你学会阅读日志文件,而不是解决这个特定的问题。如果您点击包含您的软件包名称的红色的第一行或第二行,您将找到确切的位置。崩溃也应该有致命的词,并且是红色的。 – 2012-08-02 21:46:29

+0

f你看不到logcat goto eclipse - > window - > show view - > logcat – 2012-08-02 21:51:22

回答

1

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

什么你可能需要的是:

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

这是问题,在C++ vector <>不需要init – xnl96 2012-08-02 21:51:41

+0

Ahm,你选择一个答案告诉你使用logcat?我也可以这样做,而不是花时间阅读你的代码,它会更容易...(!) – Ixx 2012-08-02 21:53:33

0

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

如果你没有看到的logcat转到日食 - >窗口 - >显示视图 - > logcat的

+0

这确实是一个有用的建议,并将使xnl96的生活更轻松,但应该是一个评论/是不是问题的答案。 – Ixx 2012-08-02 21:59:58