我正在开发一个应用程序,我必须在 Android 4.3 上连接到蓝牙设备。
我已连接到 BLE 设备,Main.java 中的函数将从 DeviceControl.java 接收设备地址。
我将设备地址存储在我已连接的 String[] address
中。
如果从 DeviceControl.java 接收到的地址已经在 String[] address
中,它将不会在 ListView 中列出。
当我看到日志时,从 DeviceControl.java 和字符串数组接收到的 string 的值是相同的。 地址[0] = 90:59:AF:0B:8A:AC 地址 = 90:59:AF:0B:8A:AC
但它仍然在 ListView 中显示地址,并且 if else 函数
表明这是不同的!
这是我的代码:
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
为什么我看到的地址是一样的,但还是显示不一样????
最佳答案
您不应使用引用相等运算符 (==
) 来比较 Java 中的 String
对象。相反,您应该使用 equals()
方法:
if(address[0].equals(mdeviceAddress)) {
...
} else {
...
}
关于java - 当我使用 onNewIntent 时发生 java.lang.NullPointerException 的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19658603/