Spinner无法正常工作.这是我的代码:
public class second extends Activity{
Spinner spin;
String[] str;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
spin = (Spinner) findViewById(R.id.spin);
str = new String[] {"bike","car"};
spin.setAdapter(new ArrayAdapter<CharSequence>(this, android.R.layout.simple_dropdown_item_1line, str));
spin.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> adapter, View view, int pos,
long id) {
// TODO Auto-generated method stub
String data= spin.getItemAtPosition(pos).toString();
Toast.makeText(second.this, data, Toast.LENGTH_SHORT).show();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
问题出在这里,
spin.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> adapter, View view, int pos,
long id) {
// TODO Auto-generated method stub
String data= spin.getItemAtPosition(pos).toString();
Toast.makeText(second.this, data, Toast.LENGTH_SHORT).show();
}
});
Run Code Online (Sandbox Code Playgroud)
尝试更换它,如下所示,
spin.OnItemSelectedListener (new OnItemSelectListener() {
public void onItemSelect(AdapterView<?> adapter, View view, int pos,
long id) {
// TODO Auto-generated method stub
String data= spin.getItemAtPosition(pos).toString();
Toast.makeText(second.this, data, Toast.LENGTH_SHORT).show();
}
});
Run Code Online (Sandbox Code Playgroud)
你犯的唯一错误是你设置了不同的事件监听器..
听众OnItemClickListener是为ListView......
因为Spinner你必须设置OnItemSelectedListener..
尝试替换OnItemClickListener为OnItemSelectedListener喜欢:
spin.OnItemSelectedListener (new OnItemSelectedListener() {
public void onItemClick(AdapterView<?> adapter, View view, int pos,
long id) {
// TODO Auto-generated method stub
String data= spin.getItemAtPosition(pos).toString();
Toast.makeText(second.this, data, Toast.LENGTH_SHORT).show();
}
});
Run Code Online (Sandbox Code Playgroud)
这是你的oncreate()方法中的问题:
spin = (Spinner) findViewById(R.id.spin);
Run Code Online (Sandbox Code Playgroud)
您将结果分配给spinner,这是一个局部变量/引用.main.spinner类字段仍为null.这就是您在calculate()方法中有NullPointerException的原因.
将上面的行替换为:
this.spin = (Spinner) findViewById(R.id.spin);
ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item,androidBooks);
spin.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10242 次 |
| 最近记录: |