我正在开发我的第一个android应用程序,并且试图在视图中添加spinner
。通过查看《 Android开发人员指南》,我了解了如何将其添加到视图中以及如何向微调框实际添加项目。
除了我实际尝试添加项目的时间之外,都会弹出以下内容:Java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' on a null object reference
如您所见,我正在尝试在微调器对象上运行.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);
上面的代码都是在我调用
setContentView()
之后调用的,所以这不是问题。像微调器这样简单的事情怎么会给我造成很大麻烦?
谢谢。
编辑
看到特定评论后,我忘记添加包含
where_spinner
的布局文件是对话框使用的布局。不过where_spinner
应该可以访问,因为该布局中的任何其他对象也可以访问。 最佳答案
您的spinner
是null
。如果在用Activity#findViewById()
设置的活动的视图层次结构中找不到该视图,或者完全没有调用setContentView()
,则setContentView()
返回null。
根据注释,您的where_spinner
实际上位于对话框视图层次结构中。在对话框的层次结构而不是活动上调用findViewById()
来查找它。