Recuperar y establecer datos de DialogFragment (DatePicker)

Mi clase DialogFragment se invoca cuando presiono un botón en una actividad. Quiero que la fecha fijada con este DialogFragment sea exhibida en el texto de los botones. FindViewById se niega a ser reconocido por la clase.

Encontré una pregunta similar, pero no puedo relacionarla con mi caso.

Código:

  1. Botón que llama el fragmento de diálogo:

    public void datepicker(View v) { DialogFragment newFragment = new DatePickerFragment(); newFragment.show(getFragmentManager(), "datePicker"); } 
  2. Código para fragmento de diálogo:

     public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { @Override public Dialog onCreateDialog(Bundle savedInstanceSateate) { final Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); return new DatePickerDialog(getActivity(), this, year, month, day); } public void onDateSet(DatePicker view, int year, int month, int day) { // Do something with the date chosen } } } 

En el método en su DialogFragment que se encarga de ser notificado cuando el usuario fija la fecha, haga esto

 Button activityButton = (Button)getActivity().findViewById(R.id.myButton); activityButton.setText (myDate); 

Crear Clase para DatePicker Fragmento:

  public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Calendar now = Calendar.getInstance(); year = now.get(Calendar.YEAR); month = now.get(Calendar.MONTH); day = now.get(Calendar.DATE); return new DatePickerDialog(getActivity(), this, year, month, day); } public void onDateSet(DatePicker view, int year, int month, int day) { orderDateEditText.setText(year + "-" + (month + 1) + "-" + day); } } 

Llame a este fragmento al hacer clic en ImageButton :

  /** Create DatePicker dialog on click of OrderDateEditText **/ orderDatePickerButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub DialogFragment newFragment = new SelectDateFragment(); newFragment.show(getFragmentManager(), "DatePicker"); } }); 

En Mes hay más 1 porque DatePicker por defecto toma mes de 0 a 11 para enero a diciembre.

Gracias..

aquí hay un buen patrón a seguir:

  1. crear una interfaz de escucha en su diálogo para manejar el botón correspondiente presiona en el diálogo
  2. implementarlo en la actividad inicial
  3. cuando el usuario presiona "bien" o "cancelar", llame a los métodos de escucha
  4. haz lo que tengas que hacer en el impl del oyente para actualizar la vista de la actividad

algo como,

 class MyDialogFragment extends DialogFragment implements DialogInterface.OnClickListener { static interface Listener { void onOkay(MyObject result); void onCancel(); } ... @Override public Dialog onCreateDialog(Bundle savedInstanceState) { ... // set this as a listener for ok / cancel buttons return new AlertDialog.Builder(activity)...whatever... .setPositiveButton(R.string.ok, this) .setNegativeButton(R.string.cancel, this).create(); } @Override public void onClick(DialogInterface dialog, int which) { if (which == DialogInterface.BUTTON_POSITIVE) { if (getActivity() instanceof Listener) { ((Listener)getActivity()).onOkay(...); } } else { if (getActivity() instanceof Listener) { ((Listener)getActivity()).onCancel(); } } } } class MyActivity extends Activity implements MyDialogFragment.Listener { ... @Override public void onOkay(MyObject result) { // update activity view here with result } @Override public void onCancel() { // anything? } } 

en su caso, el "resultado" pasado en el método onOkay() sería el objeto Date escogido por el usuario en el diálogo.

Un Fragment no es una View . Si desea encontrar un fragmento, use findFragmentById del FragmentManager .

  • Permitir el toque externo para DialogFragment
  • Dialog FLAG_DIM_BEHIND no funciona en Android 5.x (Lollipop)
  • Cambio de orientación: IllegalStateException cuando DialogFragment es visible
  • Callback de DialogFragment en el cambio de orientación
  • Cómo puedo establecer un intervalo de minutos en DialogFragment
  • No ver la interfaz de EditNameDialogListener
  • Problema de devolución de llamada de diálogo a pantalla completa de Android
  • ListView no se actualiza hasta que el teclado esté oculto
  • Ventaja de usar un DialogFragment sobre AlertDialog simple?
  • Android - DialogFragment con diseño que contiene fragmento
  • ¿Cómo administrar un DialogFragment con RxJava?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.