Puede publicar el código de ejemplo para un simple selector de fecha en Android.

Si el selector de fecha no es posible en Android, una opción para elegir una fecha que se necesita.

InformationsquelleAutor Sanjeev | 2010-07-21

7 Comentarios

  1. 57

    Utilizar el selector de fecha

    http://developer.android.com/reference/android/widget/DatePicker.html

    Es availible desde la API de Nivel 1

    Aquí un ejemplo de cómo usar el DatePickerDialog.

    Añadir un TextView y un Botón para su layout.xml

    <Button android:id="@+id/myDatePickerButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Choose Date"/>
    
    <TextView android:id="@+id/showMyDate"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"/>

    Siguiente tiene que inicializar el Botón y TextView en el Método onCreate de su diseño.
    Usted necesita esta clase de variables

    private int mYear;
    private int mMonth;
    private int mDay;
    
    private TextView mDateDisplay;
    private Button mPickDate;
    
    static final int DATE_DIALOG_ID = 0;

    Aquí el método onCreate

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        mDateDisplay = (TextView) findViewById(R.id.showMyDate);        
        mPickDate = (Button) findViewById(R.id.myDatePickerButton);
    
        mPickDate.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                showDialog(DATE_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);
    
        //display the current date
        updateDisplay();
    }

    UpdateDisplay método:

    private void updateDisplay() {
        this.mDateDisplay.setText(
            new StringBuilder()
                    //Month is 0 based so add 1
                    .append(mMonth + 1).append("-")
                    .append(mDay).append("-")
                    .append(mYear).append(" "));
    }

    La devolución de llamada detector para el DatePickDialog

    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();
            }
        };

    La onCreateDialog método, llamado por showDialog()

    @Override
    protected Dialog onCreateDialog(int id) {
       switch (id) {
       case DATE_DIALOG_ID:
          return new DatePickerDialog(this,
                    mDateSetListener,
                    mYear, mMonth, mDay);
       }
       return null;
    }

    La esperanza de que esto ayude, usado y funciona muy bien.

    Ejemplo de

    http://developer.android.com/guide/tutorials/views/hello-datepicker.html

    • Cómo utilizar esto en un Fragmento ?
  2. 3
    public class dateresult extends Activity
    {
    private TextView tvdisplaydate;
    private DatePicker dpResult;
    private Button bntchangedate;
    private int year;
    private int month;
    private int day;
    static final int DATE_DIALOG_ID = 999;
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.result);
    setCurrentdateonView();
    addListenerOnButton();
    }
    public void setCurrentdateonView(){
    tvdisplaydate = (TextView)findViewById(R.id.tvdate);
    dpResult = (DatePicker) findViewById(R.id.dpResult);
    final Calendar c = Calendar.getInstance();
    year = c.get(Calendar.YEAR);
    month = c.get(Calendar.MONTH) ;
    day = c.get(Calendar.DAY_OF_MONTH);
    tvdisplaydate.setText(new StringBuffer()                   .append(month+1).append("-").append(day).append("-").append(year).append(""));
    dpResult.init(year, month, day, null);                                  
    }             
    public void addListenerOnButton(){                  
    bntchangedate = (Button)findViewById(R.id.bntchangedate);
    bntchangedate.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
    //TODO Auto-generated method stub
    showDialog(DATE_DIALOG_ID);
    }
    });              
    }                
    @Override
    protected Dialog onCreateDialog(int id) {
    //TODO Auto-generated method stub
    switch(id){
    case DATE_DIALOG_ID:
    return new DatePickerDialog(this,datePickerLisner,year,month,day);
    }
    return null;
    }                
    private DatePickerDialog.OnDateSetListener datePickerLisner = new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int Selectyear,int Selectmonth, int Selectday) {
    year= Selectyear;
    month= Selectmonth;
    day = Selectday;
    tvdisplaydate.setText(new StringBuilder() 
    .append(Selectmonth+1).append("-").append(Selectday).append("-").append(Selectyear).append(""));
    dpResult.init(year, month, day, null);                  
    }
    };
    }
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <Button
    android:id="@+id/bntchangedate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Change Date" />
    <TextView
    android:id="@+id/lbldate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Current Date (M-D-YYYY) :" 
    android:textAppearance="?android:attr/textAppearanceLarge"/>
    <TextView
    android:id="@+id/tvdate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text=""
    android:textAppearance="?android:attr/textAppearanceLarge" />
    <DatePicker
    android:id="@+id/dpResult"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
    </LinearLayout>
  3. 1
    public class DatePickerDialogFragment extends DialogFragment{
    //ResidenceActivity date = new ResidenceActivity();
    Handler mHandler ;
    int mDay;
    int mMonth;
    int mYear;
    public DatePickerDialogFragment(Handler h){
    /** Getting the reference to the message handler instantiated in MainActivity class */
    mHandler = h;
    }
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState){
    /** Creating a bundle object to pass currently set date to the fragment */
    Bundle b = getArguments();
    /** Getting the day of month from bundle */
    mDay = b.getInt("set_day");
    /** Getting the month of year from bundle */
    mMonth = b.getInt("set_month");
    /** Getting the year from bundle */
    mYear = b.getInt("set_year");
    /** DatePickerDialog's "Set" click listener */
    DatePickerDialog.OnDateSetListener listener  = new DatePickerDialog.OnDateSetListener() {
    //  @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    mDay = dayOfMonth;
    mMonth = monthOfYear;
    mYear = year;
    /** Creating a bundle object to pass currently set date to the fragment */
    Bundle b = new Bundle();
    /** Adding currently set day to bundle object */
    b.putInt("set_day", mDay);
    /** Adding currently set month to bundle object */
    b.putInt("set_month", mMonth);
    /** Adding currently set year to bundle object */
    b.putInt("set_year", mYear);
    /** Adding Current date in a string to bundle object */
    b.putString("set_date", Integer.toString(mDay) + "/" + Integer.toString(mMonth+1) + "/" + Integer.toString(mYear));
    /** Creating an instance of Message */
    Message m = new Message();
    /** Setting bundle object on the message object m */
    m.setData(b);
    /** Message m is sending using the message handler instantiated in MainActivity class */
    mHandler.sendMessage(m);
    }
    };
    /** Opening the DatePickerDialog window */
    return new DatePickerDialog(getActivity(), listener, mYear, mMonth, mDay);
    }
    }
    • Lo siento, vi esto y tenía que dar alguna información. 1. Controlador en el constructor Aahh!!!? No. nunca constructores de uso con Lifecycled componentes. 2. Por favor, utilice las constantes para el Paquete de valores, menos propensos a cometer errores. 3. Los controladores son un poco de un hack, que puedo trabajar si su actividad es lifecycled. Así que tal vez buscar un mejor método para esto.
    • ¿Cuál es el problema con él (El Controlador)?
  4. 0

    Aceptado la respuesta no maneje el usuario hace clic en cancelar en el selector de fecha. En ese caso, nada debe ser actualizado.

    Yo quería lo mismo que el OP, pero yo solo la quería en-línea. Aquí es lo que he usado:

    Crear la devolución de llamada que se llama cuando el selector de fecha ACEPTAR clic en el botón:

    public void datePicked(int year, int month, int day) {
    buttonDate.setText(String.valueOf(year) + "/" + 
    String.valueOf(month) + "/" + String.valueOf(day));
    }

    A continuación, utilice el código siguiente en el método donde se crea un botón para elegir la fecha:

        buttonDate = (Button) rootView.findViewById(R.id.button_select_date);
    buttonDate.setText("Select Date");
    buttonDate.setOnClickListener(new View.OnClickListener() {
    public void setReturnDate(int year, int month, int day) {
    datePicked(year, month, day);
    }
    @Override
    public void onClick(View v) {
    Dialog datePickerDialog = new DatePickerDialog(activity, new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    }
    }, leagueEndDate.get(Calendar.YEAR), leagueEndDate.get(Calendar.MONTH), leagueEndDate
    .get(Calendar.DAY_OF_MONTH));
    datePickerDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
    @Override
    public void onDismiss(DialogInterface dialog) {
    setReturnDate(((DatePickerDialog) dialog).getDatePicker().getYear(),
    ((DatePickerDialog) dialog).getDatePicker().getMonth(), ((DatePickerDialog) dialog)
    .getDatePicker().getDayOfMonth());
    }
    });
    datePickerDialog.show();
    }
    });
  5. 0
    Step 1 : create a java file:
    package com.example.babs;
    import java.util.Calendar;
    import android.app.Activity;
    import android.app.DatePickerDialog;
    import android.app.Dialog;
    import android.app.DialogFragment;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.DatePicker;
    import  android.app.FragmentManager;
    public class EditUserInfo extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.user_edit_view);
    }
    public class DatePickerFragment extends DialogFragment
    implements DatePickerDialog.OnDateSetListener {
    //pgrm mark ---- ---- ----- ---- ---- ----- ---- ---- -----  ---- ---- -----
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
    //Use the current date as the default date in the picker
    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);
    //Create a new instance of DatePickerDialog and return it
    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 by the user
    }
    }
    public void showDatePickerDialog(View v) {
    FragmentManager fragmentManager = getFragmentManager();
    DialogFragment newFragment = new DatePickerFragment();
    newFragment.show(fragmentManager, "datePicker");
    }
    }//end main class EditUserInfo
    step 2: your xml file must contain : 
    <?xml version="1.0" encoding="utf-8"?>
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:fillViewport="true" >
    </ScrollView>
    <Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:text="@string/pick_date" 
    android:onClick="showDatePickerDialog" />
  6. 0

    uso: import java.util.Calendario;

    lugar: import android.la uci.util.Calendario.

    este paquete es compatible sólo para el nivel de API-24 no menos que eso. Este es el paquete que necesitamos utilizar para conseguir el Calendario en el cuadro de diálogo,

    esto funciona bien.

Dejar respuesta

Please enter your comment!
Please enter your name here