繁体   English   中英

当我使用onNewIntent时,会发生java.lang.NullPointerException的错误

[英]The error of java.lang.NullPointerException happen when I use the onNewIntent

我正在开发一个应用程序,我必须连接到Android 4.3上的蓝牙设备。

我已连接到BLE设备, Main.java中的函数将从DeviceControl.java接收设备地址。

我将设备地址存储在我已连接的String[] address中。

如果地址从String[] address已经从DeviceControl.java接收,它将不会列在listview上。

当我看到Log时,从DeviceControl.java和String数组接收的字符串的值是相同的。 地址[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

为什么我看到的地址是一样的,但它仍然表明它是不同的????

您不应该使用引用相等运算符( == )来比较Java中的String对象。 相反,您应该使用equals()方法:

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

请参阅: 如何比较Java中的字符串?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM