我想创建一个微调器来显示列表m
。但是,以下代码在NullPointerException
处提供了spinner.setAdapter(spinner_adapter)
。为什么会这样?
public class Request extends ListActivity {
private static final String[] m={"A","B","O","AB","others"};
private TextView view;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SimpleAdapter adapter = new SimpleAdapter(this, getData(),
R.layout.listitem, new String[] { "name", "quant" },
new int[] {R.id.name, R.id.quant });
setListAdapter(adapter);
view = (TextView) findViewById(R.id.spinnerText);
Spinner spinner = (Spinner) findViewById(R.id.spinner01);
ArrayAdapter<String> spinner_adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,m);
spinner_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(spinner_adapter);
spinner.setOnItemSelectedListener(new SpinnerSelectedListener());
spinner.setVisibility(View.VISIBLE);
}
class SpinnerSelectedListener implements OnItemSelectedListener{
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
view.setText(""+m[arg2]);
}
public void onNothingSelected(AdapterView<?> arg0) {
}
}
}
答案 0 :(得分:3)
你的行
Spinner spinner = (Spinner) findViewById(R.id.spinner01);
结束spinner
为空,因为没有为您的活动分配内容视图。
因此,当尝试与您的微调器进行交互时,会抛出NPE。
在初始化视图之前,将setContentView(R.layout.your_layout_content);
添加到onCreate方法。
答案 1 :(得分:0)
也许,您尝试使用布局中的IDs
,而您却错过了致电setContentView
。在super.onCreate(savedInstanceState);
setContentView(<YourLayout>);
答案 2 :(得分:0)
您正在onCreate中访问这些观点,即
Spinner spinner = (Spinner) findViewById(R.id.spinner01);
id存在于 R.java 文件中,因为你有适当的布局,但是为了访问它们会导致运行时导致 nullpointer 失败你的所有观点
您需要添加
setContentView(R.layout.main);
在 onCreate 内,其中main是您的布局,即 main.xml ,其中包含 spinner01
答案 3 :(得分:0)
由于您使用ListView
默认布局,TextView
和Spinner
都将为空,因为没有R.id.spinnerText
或R.id.spinner01
所以你应该实现你的自定义布局
setContentView(...);
在这个布局中应该有
ListView
,ID为@android:id/list
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
Spinner
,ID为@+id/spinner01
<Spinner
android:id="@+id/spinner01"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
TextView
,ID为@+id/spinnerText
<TextView
android:id="@+id/spinnerText"
android:layout_width="match_parent"
android:layout_height="wrap_content" />