Java 初始化对象上的NullPointerException
我正在开发我的第一个android应用程序,我正在尝试在我的视图中添加一个Java 初始化对象上的NullPointerException,java,android,nullpointerexception,Java,Android,Nullpointerexception,我正在开发我的第一个android应用程序,我正在尝试在我的视图中添加一个微调器。通过阅读Android开发者指南,我了解了如何将其添加到我的视图中,以及如何将项目实际添加到微调器中 除了我实际尝试添加项目时,会弹出以下窗口: Java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)” 如您所见,我正试图在微调器对象上运行
微调器。通过阅读Android开发者指南,我了解了如何将其添加到我的视图中,以及如何将项目实际添加到微调器中
除了我实际尝试添加项目时,会弹出以下窗口:
Java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)”
如您所见,我正试图在微调器对象上运行.setAdapter()
。如果我在不初始化微调器对象的情况下尝试此操作,通常会发生此错误,但我确实:
Spinner spinner = (Spinner) findViewById(R.id.where_spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.where_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
微调器微调器=(微调器)findViewById(R.id.where\u微调器);
ArrayAdapter=ArrayAdapter.createFromResource(这个,R.array.where\u数组,android.R.layout.simple\u微调器\u项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转器。设置适配器(适配器);
上面的代码都是在我调用setContentView()
之后调用的,所以这不是问题所在
像旋转器这样简单的东西怎么会给我带来这么多麻烦
谢谢
编辑
在我看到一条特定的注释后,我发现我忘记添加包含的布局文件,其中_spinner
是用于对话框的布局。但是,where_微调器
应该可以访问,因为该布局中的任何其他对象也可以访问。您的微调器
为null
<如果使用setContentView()
设置的活动视图层次结构中找不到视图,或者根本没有调用setContentView()
,则代码>活动#findViewById()返回空值
根据注释,您的中的\u微调器实际上位于对话框视图层次结构中。在对话框的层次结构上调用findviewbyd()
,而不是在活动上调用以查找它 您的微调器为null
<如果使用setContentView()
设置的活动视图层次结构中找不到视图,或者根本没有调用setContentView()
,则代码>活动#findViewById()返回空值
根据注释,您的中的\u微调器实际上位于对话框视图层次结构中。在对话框的层次结构上调用findviewbyd()
,而不是在活动上调用以查找它 findViewById
可以返回null
微调器
为null。您使用setContentView()
设置的布局是否真的有where\u微调器
,或者它是在片段布局中?@laalto有,但没有。我忘了提到where_spinner
在用于对话框的布局文件中,但由于我可以在同一布局中的其他元素中执行此操作,我认为这并不重要,因此您似乎需要调用findViewById()
在对话框的视图层次结构上,而不是像现在这样在活动中。@laalto有趣的事实:我是在按钮对象上做的,但不是在微调器上。facepalm能否将此作为答案发布,以便我可以接受?:)findViewById
可以返回null
微调器
为null。您使用setContentView()
设置的布局是否真的有where\u微调器
,或者它是在片段布局中?@laalto有,但没有。我忘了提到where_spinner
在用于对话框的布局文件中,但由于我可以在同一布局中的其他元素中执行此操作,我认为这并不重要,因此您似乎需要调用findViewById()
在对话框的视图层次结构上,而不是像现在这样在活动中。@laalto有趣的事实:我是在按钮对象上做的,但不是在微调器上。facepalm能否将此作为答案发布,以便我可以接受?:)