ventana tipos studio personalizado emergente ejemplo edittext dialogo custom cuadro con java android onclick android-edittext android-datepicker

java - tipos - Detener usuario haciendo clic múltiple en edittext para abrir varios diálogos



tipos de dialogo android (2)

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 cuadros de diálogo. ¿Hay alguna manera de evitar que el usuario haga esto, de modo que solo se muestre un diálogo independientemente de cuántas veces se EditText clic en 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; } }


Primero verifique el administrador 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 cuadro de diálogo.


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 descartas el diálogo, vuelve a establecer flag = 0 .