我是android新手。我在spinner
内加AlertDialog
。我希望当用户从微调器中选择一个项目时,对话框应该在此之后关闭。但在我的情况下,当对话框显示它立即关闭时。
这是我的代码:
final String gender[] = { "Male", "Female" };
final Spinner spinner = new Spinner(getActivity());
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
getActivity(), android.R.layout.simple_dropdown_item_1line,
gender);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
tvGender.setText(gender[spinner.getSelectedItemPosition()]);
dialog.dismiss();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
spinner.setAdapter(adapter);
dialog = new AlertDialog.Builder(getActivity())
.setView(spinner)
.setTitle("Gender")
.create();
dialog.show();
我希望我有道理。
答案 0 :(得分:1)
前一段时间我遇到了类似的问题,这是因为在初始化微调器时调用了onItemSelected(我设置了一个初始选定位置)。尝试使用布尔值来避免首次执行onItemSelected。
private boolean firstExecution = true;
...
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
if(firstExecution){
firstExecution = false;
return;
}
tvGender.setText(gender[spinner.getSelectedItemPosition()]);
dialog.dismiss();
}
请告诉我这是否解决了您的问题:)
答案 1 :(得分:0)
试试这段代码..
int i = 0;
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) {
if(i == 1){
tv_security_que.setText(gender[spinner.getSelectedItemPosition()]);
dialog.dismiss();
}
i = 1;
}
只需添加一个变量和条件就很有用。