Detener usuario multi-clic en edittext para abrir varios diálogos

Tengo una pregunta muy simple. Tengo un EditText , que cuando se hace clic en, abre un DatePickerDialog . Sin embargo, al hacer clic repetidamente en EditText abren varios diálogos. ¿Hay alguna manera de restringir el usuario de hacer esto, de modo que sólo se muestra un diálogo independientemente de cuántas veces se hace clic en el EditText ?

Aquí está mi EditText en mi archivo XML:

 <EditText android:id="@+id/etSetDate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/spDifficultyLevel" android:drawableLeft="@drawable/ic_calendar_view" android:ems="10" android:focusableInTouchMode="false" android:hint=" Set Date" /> 

Aquí está el código:

 /** * Where user selects date, launch datepicker on click */ public void selectDate() { etSetDate.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { //launch datepicker DialogFragment dialogFragment = new StartDatePicker(); dialogFragment.show(getSupportFragmentManager(), "start_date_picker"); } }); } public class StartDatePicker extends DialogFragment implements DatePickerDialog.OnDateSetListener { Calendar c = Calendar.getInstance(); int startYear = c.get(Calendar.YEAR); int startMonth = c.get(Calendar.MONTH); int startDay = c.get(Calendar.DAY_OF_MONTH); @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the current date as the default date in the date picker DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, startYear, startMonth, startDay); return dialog; } } 

 int flag = 0; etSetDate.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { //launch datepicker if(flag == 0) { DialogFragment dialogFragment = new StartDatePicker(); dialogFragment.show(getSupportFragmentManager(), "start_date_picker"); flag = 1; } } }); 

Y cuando se descarta el diálogo, vuelva a establecer el flag = 0 .

Primero verifique el gestor de fragmentos para ver si el fragmento existe:

 Fragment frag = getSupportFragmentManager().findFragmentByTag("start_date_picker"); if(frag == null) { frag = new StartDatePicker(); frag.show(getSupportFragmentManager(), "start_date_picker"); } 

Si frag no es nulo entonces se muestra el diálogo.

  • AppWidget PendingIntent no funciona después de reiniciar el Lanzador
  • Android SearchView onclick
  • Android, ¿Cómo puedo obtener texto de TextView en OnClick
  • Onlclick oyente no está funcionando correctamente ..?
  • ¿Cómo puedo detectar un clic en el título de ActionBar?
  • La vista inflada no captura el evento onClick
  • Android: OnClick para el encabezado del cajón de navegación no funciona
  • Android: No se puede obtener un encabezado / pie de lista ListView que se puede hacer clic
  • Android Múltiples secuencias de clics en textview
  • Evite que EditText consuma un evento de clic
  • Evento de clic transferido a la siguiente Actividad iniciada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.