安卓蓝牙程序中android java.lang.…

来源:互联网 发布:python 股票 数据 编辑:程序博客网 时间:2024/06/06 08:51

上个礼拜跑的蓝牙程序中出现了一出现就跳出,activity根本跑不出来的情况。看catlog,发现报的一堆错误中除了一堆java、android包的错误外,自己包中的错误有两条,另外开头的一条错误就是androidjava.lang.NullPointerException。

于是我debug的力气就花在自己包中报错的那两行代码中。那两行代码其实是非常简单的句子,一条是一个方法的声明,还有一条是一个List的adapter方法。在那两行代码上下几行中找了半天,也没什么发现,懊恼+无奈,论坛上找了很久,网友的解答千奇百怪,一条条试过来,最后发现还是不能解决问题。最后甚至跑SDK中的实例蓝牙程序竟然都跑不起来,很不爽。后来干脆就放在一边了。今天晚上吃好饭回来又开始找,还是从报错的那两行代码入手debug,这次上下查找的范围更大,把和他们相关的所有句子都找过了。最后在一个网友为他人解答中找出了问题。那位网友大致的说法是程序中只是做了声明,但是没有实例化,这样的情况下一般会报空指针错误。

于是我从变量声明入手,发现了问题所在,是下面这句语句!

private ArrayList<BluetoothDevice>foundDevices;

上面这句声明中,也就是那位网友说的,只有声明,没有实例化,所以报了androidjava.lang.NullPointerException的错误!于是,我将这句声明改了下:

private List<BluetoothDevice>foundDevices = newArrayList<BluetoothDevice>();

果不其然,就在刚才,十分钟之前,程序跑起来了,至少是activity出来了,不会出现force stop!呼!!!下面还要验证其他功能,加油!

两点收获:

1、android报错,在一堆赤字中,关注自己包中的错误,然后找和它们相关的所有上下文进行排错。不必过分拘泥其他的红字。

2、每个bug都是独一无二的,需要你这个bug制造者自己去扼杀,除非是一个高手在你身边,否则不可能假手于人,一定要耐心掌握debug。

加油!