我有这个微调器,我想找到所选项目的内容。这就是我目前运行的:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
spinner = (Spinner) findViewById(R.id.spinner);
adapter = ArrayAdapter.createFromResource(this, R.array.teams, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
teamText = parent.getItemAtPosition(pos).toString();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
但是出于某种原因,当它到达那个部分时,应用程序崩溃并且说微调器是null:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.brandon.checkpoints/com.example.jit.checkpoints.MapsActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' on a null object reference
....
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' on a null object reference
为什么会发生这种情况的任何想法?我知道微调器是null,但我想弄清楚的是为什么它是null。可能是因为旋转器在此之前还处于另一个活动中?我想做的是:
1)用户在活动1中选择来自微调器的路径
2)用户点击下一页,在下一页(活动)上,将来自微调器的选定值放入变量中。
3)然后使用该变量来确定用户获得的路线(例如:如果用户从微调器中选择1,则用户获得路线1,如果用户选择2,则获得路线2等)
答案 0 :(得分:1)
您需要将数据从一个活动传递到另一个活动。请参阅How do I pass data between Activities in Android application?。
答案 1 :(得分:1)
确保您使用的是包含身份XML
的{{1}}小部件的正确布局Spinner
。
spinner
答案 2 :(得分:0)
我想弄明白为什么它是空的。可能是因为微调器在此之前还处于另一个活动中?
是的,这很可能就是问题所在。 findViewById()
只会搜索当前活动的视图层次结构。您不能使用它来获取另一个活动中的视图。相反,您必须在Intent中的活动之间传递数据。有关如何执行此操作的详细信息,请参阅Start Another Activity。