2011-11-22 82 views
0

我正在尝试使用以下内容来创建Spinner。但我得到NullPointerException在线Android Spinner获取NullPointerException

 Register.registerlist.setAdapter(spinnernamelist); 

任何人都可以帮助我吗?谢谢。

ArrayAdapter<String> spinnernamelist= new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, Register.namelist); 
    spinnernamelist.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    Register.registerlist=(Spinner)findViewById(R.id.showlist); 
    Register.registerlist.setAdapter(spinnernamelist); 

我logcat的输出 -

11-22 07:43:30.881: E/AndroidRuntime(1200): java.lang.IllegalStateException: Could not execute method of the activity 
11-22 07:43:30.881: E/AndroidRuntime(1200):  at android.view.View$1.onClick(View.java:3019) 
11-22 07:43:30.881: E/AndroidRuntime(1200):  at android.view.View.performClick(View.java:3460) 
11-22 07:43:30.881: E/AndroidRuntime(1200):  at android.view.View$PerformClick.run(View.java:13955) 
11-22 07:43:30.881: E/AndroidRuntime(1200):  at android.os.Handler.handleCallback(Handler.java:605) 
11-22 07:43:30.881: E/AndroidRuntime(1200):  at android.os.Handler.dispatchMessage(Handler.java:92) 
11-22 07:43:30.881: E/AndroidRuntime(1200):  at android.os.Looper.loop(Looper.java:137) 
11-22 07:43:30.881: E/AndroidRuntime(1200):  at android.app.ActivityThread.main(ActivityThread.java:4340) 
11-22 07:43:30.881: E/AndroidRuntime(1200):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-22 07:43:30.881: E/AndroidRuntime(1200):  at java.lang.reflect.Method.invoke(Method.java:511) 
11-22 07:43:30.881: E/AndroidRuntime(1200):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
11-22 07:43:30.881: E/AndroidRuntime(1200):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
11-22 07:43:30.881: E/AndroidRuntime(1200):  at dalvik.system.NativeStart.main(Native Method) 
11-22 07:43:30.881: E/AndroidRuntime(1200): Caused by: java.lang.reflect.InvocationTargetException 
11-22 07:43:30.881: E/AndroidRuntime(1200):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-22 07:43:30.881: E/AndroidRuntime(1200):  at java.lang.reflect.Method.invoke(Method.java:511) 
11-22 07:43:30.881: E/AndroidRuntime(1200):  at android.view.View$1.onClick(View.java:3014) 
11-22 07:43:30.881: E/AndroidRuntime(1200):  ... 11 more 
11-22 07:43:30.881: E/AndroidRuntime(1200): Caused by: java.lang.NullPointerException 
11-22 07:43:30.881: E/AndroidRuntime(1200):  at Picture.Capture.Register.callPictureTake(Register.java:56) 
+0

你可能会添加NPE的堆栈跟踪吗? –

+0

更新的堆栈跟踪 – James

回答

0

spinnernamelist显然不为空,所以Register.registerlist必须为空。如果在Activity的父布局中未找到具有该标识符的视图,则findViewById(...)将返回null。确保您引用的ID确实在您要从中调用的活动中。

+0

如果我想使用来自其他活动的ID,那么这可能吗? – James

+0

许多事情都是可能的,但不推荐。拥有权利的同时也被赋予了重大的责任。从一个活动到另一个活动的“视图”周围传递很有可能导致泄漏。最好的做法是与Spinner的活动交流它需要做什么并给它相关的数据。 'Handler's是实现这个目标的好方法,也是'BroadcastReceiver's。 –

+0

非常感谢 – James

2

很可能是Register.registerlist为空,你会得到一个空指针异常,当你试图在其上运行的方法。

所以,检查是否Register.registerlist正确初始化

+0

我是新来的android。如何初始化微调器?非常感谢 – James

+0

在调用'findViewById'之前,检查是否调用了'setContentView'?另外,检查你是否已经在xml文件中正确地声明了spinner元素的id .. – bluefalcon