Java 微调器项目单击时应用程序崩溃
我的简单微调器有以下代码:Java 微调器项目单击时应用程序崩溃,java,android,spinner,Java,Android,Spinner,我的简单微调器有以下代码: private Spinner spnr_gender; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_complete_profile); //GUI spnr_gender = (Spinner)findView
private Spinner spnr_gender;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_complete_profile);
//GUI
spnr_gender = (Spinner)findViewById(R.id.spnr_finish_gender);
ArrayAdapter<CharSequence> gender_adapter = ArrayAdapter.createFromResource(this, R.array.strs_gender, android.R.layout.simple_spinner_item);
gender_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spnr_gender.setAdapter(gender_adapter);
spnr_gender.setOnItemClickListener((AdapterView.OnItemClickListener) this);
}
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
String selectChoice = adapterView.getItemAtPosition(i).toString();
Toast.makeText(adapterView.getContext(), selectChoice, Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
private Spinner spnr\u性别;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u complete\u profile);
//桂
spnr_性别=(微调器)findViewById(R.id.spnr_finish_性别);
ArrayAdapter gender_adapter=ArrayAdapter.createFromResource(这个,R.array.strs_gender,android.R.layout.simple_微调器_项);
性别\适配器.setDropDownViewResource(android.R.layout.simple \微调器\下拉菜单\项);
spnr_gender.setAdapter(gender_adapter);
spnr_gender.setOnItemClickListener((AdapterView.OnItemClickListener)this);
}
@凌驾
已选择公共视图(AdapterView AdapterView、View视图、int i、long l){
String selectChoice=adapterView.getItemAtPosition(i).toString();
Toast.makeText(adapterView.getContext(),selectChoice,Toast.LENGTH\u SHORT.show();
}
@凌驾
未选择公共无效(AdapterView AdapterView){
}
我要做的是烤出用户在微调器上选择的东西。strings.xml中的My string数组:
<string-array name="strs_gender">
<item>Male</item>
<item>Female</item>
</string-array>
男性
女性
运行应用程序时,它只是崩溃了。我在logcat上找不到任何东西,但我的嫌疑犯是这一行
spnr\u gender.setonimclickleenner((AdapterView.OnItemClickListener)this)代码>
如何修复此问题?使用此选项
spnr_gender.setOnItemSelectedListener(this);
ArrayAdapter<CharSequence> gender_adapter = ArrayAdapter.createFromResource(this, android.R.layout.simple_spinner_item,getResources().getStringArray(R.array.strs_gender));
而不是
spnr_gender.setOnItemClickListener((AdapterView.OnItemClickListener) this);
void setOnItemSelectedListener(AdapterView.OnItemSelectedListener listener)
在选择此AdapterView中的项目时注册要调用的回调
编辑
用这个
spnr_gender.setOnItemSelectedListener(this);
ArrayAdapter<CharSequence> gender_adapter = ArrayAdapter.createFromResource(this, android.R.layout.simple_spinner_item,getResources().getStringArray(R.array.strs_gender));
ArrayAdapter gender\u adapter=ArrayAdapter.createFromResource(这是android.R.layout.simple\u spinner\u项,getResources().getStringArray(R.array.strs\u gender));
而不是这个
ArrayAdapter<CharSequence> gender_adapter = ArrayAdapter.createFromResource(this, R.array.strs_gender, android.R.layout.simple_spinner_item);
ArrayAdapter-gender\u-adapter=ArrayAdapter.createFromResource(这个,R.array.strs\u-gender,android.R.layout.simple\u-spinner\u项);
以下是解决方案
私人纺纱厂spnr_性别
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_complete_profile);
//GUI
spnr_gender = (Spinner) findViewById(R.id.spnr_finish_gender);
ArrayAdapter<CharSequence> gender_adapter = ArrayAdapter.createFromResource(this, R.array.strs_gender, android.R.layout.simple_spinner_item);
gender_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spnr_gender.setAdapter(gender_adapter);
spnr_gender.setOnItemSelectedListener((AdapterView.OnItemSelectedListener) this);
}
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
String selectChoice = adapterView.getItemAtPosition(i).toString();
Toast.makeText(adapterView.getContext(), selectChoice, Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u complete\u profile);
//桂
spnr_性别=(微调器)findViewById(R.id.spnr_finish_性别);
ArrayAdapter gender_adapter=ArrayAdapter.createFromResource(这个,R.array.strs_gender,android.R.layout.simple_微调器_项);
性别\适配器.setDropDownViewResource(android.R.layout.simple \微调器\下拉菜单\项);
spnr_gender.setAdapter(gender_adapter);
spnr_gender.setOnItemSelectedListener((AdapterView.OnItemSelectedListener)this);
}
@凌驾
已选择公共视图(AdapterView AdapterView、View视图、int i、long l){
String selectChoice=adapterView.getItemAtPosition(i).toString();
Toast.makeText(adapterView.getContext(),selectChoice,Toast.LENGTH\u SHORT.show();
}
@凌驾
未选择公共无效(AdapterView AdapterView){
}
声明项单击侦听器时仅使用(此)上下文
不要使用(AdapterView.OnItemClickListener)
对其进行强制转换
仅使用
spnr_gender.setOnItemSelectedListener(this);
就这样做吧
sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
sp.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
您在适配器中传递了错误的参数。参数应该类似于ArrayAdapter.createFromResource(这个,android.R.layout.simple\u微调器\u项,列表);可能重复的