1

我正在開發一個應用程序,我必須連接到Android 4.3上的藍牙設備。當我使用onNewIntent發生java.lang.NullPointerException的錯誤

我有連接到BLE裝置,並在Main.java功能將從DeviceControl.java接收設備地址。

我將設備地址存儲在String[] address已連接的位置。

如果地址從收到DeviceControl.java已經在String[] address,它不會在列表視圖中列出。

當我看到的日誌,的值從DeviceControl.java接收和字符串數組是相同的。 地址[0] = 90:59:AF:0B:8A:AC 地址= 90:59:AF:0B:8A:AC

但它仍然顯示在列表視圖中的地址,並且if else function指示這是deiiferent!

這是我的代碼:

public class Main extends Activity { 

private String[] address = {"0","1","2","3","4","5"}; 
private String mdeviceAddress; 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 


     mdeviceAddress = infoIntent.getStringExtra(EXTRAS_DEVICE_ADDRESS); 
     address[0] = mdeviceAddress; 
     devicelist = (ListView) findViewById(R.id.devicelist); 
     for(int i=0;i<3;i++) { 
       } 
       if(address[i] == mdeviceAddress){ 
        Log.v(TAG, "address double :" + mdeviceAddress); 

        break; 
       }else if(address[i].length() == 1) { 
        address[i] = mdeviceAddress; 
        name[i] = mdevicename; 
        rssi[i] = rssithreshold; 

        tempaddress = address[i]; 
        Log.v(TAG, "show the address :" + address[0]); 
        break; 
       } 
      } 

}

它總是顯示消息:顯示地址:90:59:AF:0B:8A:AC

爲什麼地址是我見過的一樣,但它仍然顯示它是差別?

回答

3

您不應該使用引用相等運算符(==)來比較您在Java中的String對象。相反,你應該使用equals()方法:

if(address[0].equals(mdeviceAddress)) { 
    ... 
} else { 
    ... 
} 

見:你How do I compare strings in Java?

+0

謝謝!這是工作! – Wun

相關問題