我在向数组适配器添加项目时遇到问题。
这是代码
public void find_BondedDevices (View view) {
// Look for bonded devices
pairedDevices = btAdapter.getBondedDevices();
if (pairedDevices.size() > 0) {
for (BluetoothDevice device : pairedDevices) {
String deviceBTName = device.getName();
String deviceBTMajorClass = getBTMajorDeviceClass(device
.getBluetoothClass()
.getMajorDeviceClass());
pairedDevicesAdapter.add(deviceBTName + "\n" + deviceBTMajorClass);
}
}
如果代码放在onCreate方法中,它就可以了!
如果我评论该行
pairedDevicesAdapter.add(deviceBTName + "\n" + deviceBTMajorClass);
它有效!
java.lang.IllegalStateException: Could not execute method of the activity
at android.view.View$1.onClick(View.java:3638)
at android.view.View.performClick(View.java:4243)
at android.view.View$PerformClick.run(View.java:17520)
android.app.ActivityThread.main(ActivityThread.java:5299)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at android.view.View$1.onClick(View.java:3633)
at android.view.View.performClick(View.java:4243)
at android.view.View$PerformClick.run(View.java:17520)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:153)
at android.app.ActivityThread.main(ActivityThread.java:5299)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.voice.benz.instaremote.MainActivity.find_BondedDevices(MainActivity.java:95)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at android.view.View$1.onClick(View.java:3633)
at android.view.View.performClick(View.java:4243)
at android.view.View$PerformClick.run(View.java:17520)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:153)
at android.app.ActivityThread.main(ActivityThread.java:5299)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)
我几乎尝试了所有但没有结果,我需要将此代码放在一个单独的函数中,因为在onCreate方法中没用了
以下是该应用的完整代码: http://pastebin.com/nZYdSkaA
有什么想法吗? 感谢
答案 0 :(得分:2)
您已将适配器分配给本地变量 pairedDevicesAdapter ,而不是实例变量。
它是onCreate()方法的本地参见:
0.011617 - (-0.138894) = 0.150512
因此,您的 pairedDevicesAdapter 是您用来调用方法的那个'添加'为空(从未初始化)。
修复:
onCreate()上的只是这样做:
ArrayAdapter<String> pairedDevicesAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
答案 1 :(得分:0)
问题的主要原因是
Caused by: java.lang.NullPointerException
at com.voice.benz.instaremote.MainActivity.find_BondedDevices(MainActivity.java:95)
只有当你的pairedDevicesAdapter
为空(即)时,才能检查你是否正确