2016-11-22 56 views
0

我正在处理我的第一个Android应用程序,并且正在尝试将spinner添加到我的视图中。通过查看Android开发者指南,我想出了如何将其添加到我的视图,以及如何实际添加项目到微调。已初始化对象上的NullPointerException

除了当我真正尝试添加项目和以下弹起:

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,因为该布局中的任何其他对象也是可访问的。

+1

'findViewById'可以返回'null' –

+1

'spinner'为null。您使用'setContentView()'设置的布局是否真的具有'where_spinner',或者它是否在例如一个片段布局? – laalto

+0

@laalto它的确如此,但事实并非如此。我忘了提及'where_spinner'在用于对话框的布局文件中,但是由于我可以在同一个布局中使用其他元素来做到这一点,所以我认为它并不重要。 –

回答

3

您的spinnernull。如果在setContentView()setContentView()根本没有被调用的活动视图层次结构中找不到视图,则返回空值Activity#findViewById()

根据您的意见where_spinner实际上是在对话视图层次结构。请在对话框的层次结构上调用findViewById(),而不要在活动上找到它。