我正在处理我的第一个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
应该是可访问的,因为该布局中的任何其他对象也是。
答案 0 :(得分:3)
您的-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{
if ([keyPath isEqualToString:@"scanTrackingNumber"]){
NSLog(@"scanTrackingNumber Changed %@",change);
NSLog(@"scan12335 %@",scanTrackingNumbers);
}
}
是spinner
。如果在您使用null
设置的活动视图层次结构中找不到视图,则Activity#findViewById()
会返回空值,或者根本没有调用setContentView()
。
根据评论,setContentView()
实际上是在对话视图层次结构中。在对话框的层次结构上调用where_spinner
,而不是在活动上找到它。