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
.