2015-05-09 64 views
0

添加项目到我的阵列适配器时出现问题。ArrayAdapter添加方法投射非法状态异常

下面是代码

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

任何想法? 感谢

+1

您可以发布您的堆栈跟踪与错误? – AndroidEx

+0

我已编辑帖子!我想我没有实现onClick方法等等,是吗? – Benz

+0

请同时添加一些关于您的适配器的信息。但是,由于输出已经声明您在第95行有一个NullPointerException(在com.voice.benz.instaremote.MainActivity.find_BondedDevices(MainActivity.java:95))。只要检查第95行。那里会发生什么?哪些var可以为null? – mikepenz

回答

2

你分配适配器本地变量pairedDevicesAdapter而不是实例变量

这是本地的onCreate()方法看到这一点:

ArrayAdapter<String> pairedDevicesAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1); 

因此,您pairedDevicesAdapter您使用的是调用该方法的“添加”的一个为空(从未初始化)。

修复:

上的onCreate()只是做这个:

this.pairedDevicesAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1); 
+0

它的工作原理!非常感谢你!! 几天前,我问了另一个问题,它是关于蓝牙(如何连接到设备),如果你能帮助我将非常感激! 谢谢你! – Benz

0

的问题的主要原因是

Caused by: java.lang.NullPointerException 
       at com.voice.benz.instaremote.MainActivity.find_BondedDevices(MainActivity.java:95) 

而且它只能如果您pairedDevicesAdapter为空(这是),检查你是否初始化它的权利