2013-07-10 39 views
0

我是android新手。我在AlertDialog内放置了spinner。我希望当用户从微调框中选择一个项目时,对话框应该在此之后关闭。但在我的情况下,当对话框显示时,它立即自行关闭。选择微调项目后关闭对话框

这里是我的代码:

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

需要在alertDialog中保持微调吗? – vinaykumar

+0

我想向用户展示他可以选择的一些选项。我做错了吗?如果是这样,那么建议我别的东西 –

+0

微调器本身显示在alertDialog主题中,不需要在alertDailog中添加微调器。 – vinaykumar

回答

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(); 
     } 

让我知道这是否解决您的问题:)

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; 
} 

它有助于您只需添加一个变量和条件。