Tengo un problema que no sé cómo resolver ... Tengo una actividad, cuando hago clic en un elemento en particular del menú vinculado a esta actividad, se muestra un diálogo y se usa para agregar un artículo. Este artículo tiene una fecha y una hora, pero no logro tener un DatePicker y TimePicker dentro de este cuadro de diálogo. También intento pasar la actividad al cuadro de diálogo y usar esta para mostrar el marcador de fecha, pero eso no funciona. Antes de esto, manejé la creación de dichos artículos dentro de otra actividad. En este caso, funciona bien. Pero encontré el Diálogo más sexy ... :-) ¿Alguna idea? Hope No estoy demasiado confundido ..... Muchas gracias, LucAndroid: use un marcador de fecha y un marcador de tiempo dentro de un cuadro de diálogo
edito este post para compartir el código que tengo problemas con.
Tengo una clase de diálogo básica que intentó utilizar DatePicker y TimePicker. Básicamente, Eclipse se queja de que:
- la showDialog es indefinido para View.OnClickListener()
- método onCreateDialog: El método onCreateDialog (int) de tipo EventCreateDialog debe anular o implementar un método supertipo
- DatePickerDialog es indefinido (ya que esto no es una actividad)
Todo esto funciona desde dentro de una actividad pero no puedo tenerlo funcionando desde un cuadro de diálogo.
Muchas gracias, Luc
package com.android.myapp; import ... public class TestDialog extends Dialog implements android.view.View.OnClickListener{ private TextView mDateDisplay; private Button mPickDate; private Button mPickTime; private int mYear; private int mMonth; private int mDay; private int mHour; private int mMinute; static final int DATE_DIALOG_ID = 0; static final int TIME_DIALOG_ID = 1; private Button mButton_ok; private Button mButton_ko; private ReadyListener readyListener; private Context context; public TestDialog(Context context, ReadyListener readyListener) { super(context); this.context = context; this.readyListener = readyListener; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.event_create); mButton_ok = (Button)findViewById(R.id.button_ok); mButton_ko = (Button)findViewById(R.id.button_ko); // Add listeners mButton_ok.setOnClickListener(this); mButton_ko.setOnClickListener(this); mDateDisplay = (TextView) findViewById(R.id.dateDisplay); mPickDate = (Button) findViewById(R.id.pickDate); mPickTime = (Button) findViewById(R.id.pickTime); // add a click listener to the button mPickDate.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { showDialog(DATE_DIALOG_ID); } }); mPickTime.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { showDialog(TIME_DIALOG_ID); } }); // get the current date final Calendar c = Calendar.getInstance(); mYear = c.get(Calendar.YEAR); mMonth = c.get(Calendar.MONTH); mDay = c.get(Calendar.DAY_OF_MONTH); mHour = c.get(Calendar.HOUR_OF_DAY); mMinute = c.get(Calendar.MINUTE); updateDisplay(); } @Override protected Dialog onCreateDialog(int id) { switch (id) { case DATE_DIALOG_ID: return new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay); case TIME_DIALOG_ID: return new TimePickerDialog(this, mTimeSetListener, mHour, mMinute, false); } return null; } private void updateDisplay() { mDateDisplay.setText( new StringBuilder() // Month is 0 based so add 1 .append(mMonth + 1).append("-") .append(mDay).append("-") .append(mYear).append(" ") .append(pad(mHour)).append(":") .append(pad(mMinute))); } // the callback received when the user "sets" the date in the dialog private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { mYear = year; mMonth = monthOfYear; mDay = dayOfMonth; updateDisplay(); } }; private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() { public void onTimeSet(TimePicker view, int hourOfDay, int minute) { mHour = hourOfDay; mMinute = minute; updateDisplay(); } }; private static String pad(int c) { if (c >= 10) return String.valueOf(c); else return "0" + String.valueOf(c); } public interface ReadyListener { public void ready(MyObj myObj); } @Override public void onClick(View v) { if (v == mButton_ok) { // Do stuff.... } if(v == mButton_ko){ dismiss(); } } }
Tal vez usted podría compartir el código que no parece estar funcionando?He usado DatePicker y TimePicker en los cuadros de diálogo antes sin problemas. –
Muchas gracias, y lo siento (no vi que recibiera una respuesta). Compartiré el código, pero solo una pregunta, ¿qué contexto proporciona a DatePicker y TimePicker cuando los llama desde un cuadro de diálogo? muchas gracias, Luc – Luc
¿Podría compartir cómo se resolvió esto? Tengo el mismo problema. ¿Cómo mostramos un TimePicker (u otro cuadro de diálogo) al hacer clic en un botón dentro de un cuadro de diálogo personalizado? es decir, un diálogo desde otro diálogo? –