我正在开发我的第一个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应该可以访问,因为该布局中的任何其他对象也可以访问。

最佳答案

您的spinnernull。如果在用Activity#findViewById()设置的活动的视图层次结构中找不到该视图,或者完全没有调用setContentView(),则setContentView()返回null。

根据注释,您的where_spinner实际上位于对话框视图层次结构中。在对话框的层次结构而不是活动上调用findViewById()来查找它。

09-30 23:30
查看更多