¿Cómo usar OnDateChangedListener, OnDateSetListener sin usar datepickerdialog?
Quiero ser capaz de detectar cambios en datepicker tan pronto como el usuario comience a cambiarlo. Sin embargo, no quiero usar datrpickerdialog. ¿Alguien sabe por qué el onDateSet (DatePicker arg0, int arg1, int arg2, int arg3) no se dispara cuando cambio la fecha en datepicker?
Agradecería mucho cualquier comentario sobre eso. Aclamaciones
- Cómo utilizar DatePickerDialog en BaseAdapter
- DatePickerDialog se muestra con dos bordes
- Tema de DatePickerDialog de Android 6.0
- Uso del Kit Kat DatePicker en el dispositivo Lolipop
- La interfaz de usuario del selector de fechas se rompe al azar
Aquí está la versión simplificada de mi código:
public class AddItem extends Activity implements OnDateChangedListener,OnDateSetListener{ DatePicker start ; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.entryelements); start = (DatePicker) findViewById(R.id.start); @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), " thiv view"+year, Toast.LENGTH_LONG).show(); Log.v("indatechange", "ok"); } @Override public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), " thiv view"+arg0, Toast.LENGTH_LONG).show(); Log.v("indatechange", "ok"); }
}
- Cómo inhabilitar ciertas fechas en el cuadro de diálogo Selector de fecha de Android?
- DatePickerDialog incorrectamente imponiendo una fecha mínima de 1 de enero de 1970
- El nombre del mes aparece con el número M + en el cuadro de diálogo datePicker en android
- DatePicker.setMinDate (long minDate) lanza IllegalArgumentException: Tiempo no entre
- Android DatePicker / Diálogo que muestra mes / s incorrecto usando la fecha min / max
- El diálogo datepicker no puede pasar a spinner en el dispositivo Android 7.0
- ¿Cómo se obtiene un DatePicker de un DatePickerDialog?
- ¿Establecer límite en DatePickerDialog en Android?
Debe informar al DatePicker sobre su OnDateChangedListener. Desemejante de los widgets regulares un DatePicker no tiene … pero tiene setOnDateChangedListener()
init()
. Utilice init()
para establecer la fecha predeterminada y declarar al oyente:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.entryelements); // Set the date to now Calendar calendar = Calendar.getInstance(); start = (DatePicker) findViewById(R.id.start); start.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), this); }
Tendrá que llamar al método init (año, mes, día, onDateChangedListener) en su DatePicker para configurarlo, si desea estar informado proactivamente de las interacciones.
Suponiendo que desea inicializarlo para mostrar una fecha particular para empezar, tiene sentido llamar a esto en lugar de su método updateDate (¿qué es lo que estás haciendo? ¿O no te importa cuál es el valor inicial?)
Tenga en cuenta que no admite un OnDateSetListener de la misma manera que DatePickerDialog, ya que implicaría que la interfaz de usuario tiene alguna forma de saber cuándo el usuario ha terminado de interactuar con el selector. Puesto que no es un diálogo, usted tiene que decidir usted mismo cuando usted piensa que han terminado. Simplemente mantenga un registro con OnDateChangedListener, y tendrá sentido.
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.entryelements); start = (DatePicker) findViewById(R.id.start); expirationDate=(EditText) findViewById(R.id.expirationDate); Calendar calendar = Calendar.getInstance(); start = (DatePicker) findViewById(R.id.start); MyOnDateChangeListener onDateChangeListener = new MyOnDateChangeListener(); start.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), onDateChangeListener); } public class MyOnDateChangeListener implements OnDateChangedListener { @Override public void onDateChanged(DatePicker view, int year, int month, int day) { int mon=month+1; expirationDate.setText(day+"/"+mon+"/"+year); } }
DatePicker dpEndDate,dpStartDate; dpStartDate=(DatePicker)findViewById(R.id.dpStartDate); dpEndDate=(DatePicker)findViewById(R.id.dpEndDate); Calendar today = Calendar.getInstance(); dpStartDate.init(today.get(Calendar.YEAR), today.get(Calendar.MONTH), today.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() { @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { SmartUtils.ting(MicaAttendanceFilter.this,"Start Date Changes"); try { SimpleDateFormat simpleDateFormat=new SimpleDateFormat("dd M yyyy"); Calendar startCalendar = Calendar.getInstance(); int startDay=dpStartDate.getDayOfMonth(); int startMonth=dpStartDate.getMonth()+1; int startYear=dpStartDate.getYear(); String startDate = startDay+" "+startMonth+" "+startYear; startCalendar.setTime(simpleDateFormat.parse(startDate)); dpEndDate.setMinDate(startCalendar.getTimeInMillis()); } catch (ParseException e) { e.printStackTrace(); } } } );
- Cómo analizar JSON analizado para uso sin conexión
- Ejecución de pruebas Android método setUp () se llama varias veces