2013-07-10 4 views
0

Я новичок в 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

Какая потребность в поддержании счетчика в alertDialog? – vinaykumar

+0

Я хочу показать пользователю какой-то вариант, из которого он может выбрать. я делаю неправильно? если да, то предложите мне что-то еще –

+0

. Экран самчика показывает в теме alertDialog нет необходимости добавлять spinner в 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; 
} 

полезно для вас просто добавить одну переменную и состояние.

Смежные вопросы