Mi XMl de Diseño es como se indica a continuación:

<RelativeLayout  android:id="@+id/dateSelectionLayout"  android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:orientation="vertical" android:visibility="visible">

            <EditText android:layout_height="wrap_content" android:layout_width="fill_parent" 
                android:singleLine="true" android:id="@+id/dateSelectionEditText" android:gravity="center"
                android:textColor="#000000" android:textSize="14sp" android:cursorVisible="false"
                android:focusable="false"
                android:hint="tax code" android:layout_weight="1"/>

            <DatePicker android:id="@+id/datePicker"
                android:layout_width="fill_parent" android:layout_height="wrap_content"
                android:layout_weight="1" android:layout_below="@+id/dateSelectionEditText"/>

    </RelativeLayout>

Ahora quiero cambiar el valor de la editText que se basa en el selector de fecha de fecha. Si el Usuario cambia la fecha en que debe ser reflejado en el editText en ese momento. cómo es Posible ?

Editado:
He hecho como este:
Ha establecido la resourcec como:

datePicker = (DatePicker) findViewById(R.id.datePicker);
        dateSelectionEditText = (EditText)findViewById(R.id.dateSelectionEditText);

Y han establecido el método de reemplazo de como esta:

@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,
        int dayOfMonth) {
    dateSelectionEditText.setText(dayOfMonth+"/"+monthOfYear+"/"+year);

}

Pero todavía no conseguir ningún valor en el cambio de selector de fecha valor.

Editado:

Después de Kasper Moerch la respuesta que me dieron la solución. Pero hay un pequeño problema.
Estoy usando este código de inicialización del selector de fecha.

final Calendar c = Calendar.getInstance();  
        //dateSelectionEditText.setText( "" + dayOfMonth + "-" + monthOfYear + "-" + year );
        datePicker.init(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH), new MyOnDateChangedListener());
        Toast.makeText(getApplicationContext(), ""+position+"", Toast.LENGTH_SHORT).show();

Ahora con esto, soy capaz de ver el cambio de valor de selector de fecha. Pero toma el 0 como Primer mes (enero) en lugar de la «1». Entonces, ¿por qué se le ocurrió como este ?

Gracias.

  • Esto es porque el valor monthOfYear está basado en cero, lo que significa que va de 0, 1, 2…11 y no 1, 2, 3…12. Para solucionarlo solo uso (monthOfYear + 1) cuando se establece el texto de la EditText. He editado mi respuesta a continuación para corregir el error.
  • Sí lo he hecho así y funciona de niza.

5 Comentarios

  1. 3

    Lo que usted necesita hacer es obtener una referencia a la EditText y la DatePicker:

    EditText editText = (EditText) findViewById( R.id.dateSelectionEditText );
    DatePicker datePicker = (DatePicker) findViewById( R.id.datePicker );

    Entonces usted necesita para crear un OnDateChangedListener:

    private class MyOnDateChangedListener implements OnDateChangedListener {
      @Override
      public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
         editText.setText( "" + dayOfMonth + "-" + (monthOfYear + 1) + "-" + year );
      }
    };

    Todos los thats a la izquierda que hacer es inicializar el DatePicker:

    datePicker.init( year, monthOfYear, dayOfMonth, new MyOnDateChangedListener() ).
    • por favor, consulte la actualización de la pregunta.
    • Debe ser reflacted en el EditText si puedo cambiar el día o el mes o el año de la datePicker ?
    • Dónde debo tener init el selector de fechas ?
    • Usted debe init que, inmediatamente después de obtener la referencia a su EditText y DatePicker.
    • Has probado y funciona ?
    • Si voy a inicio el datePicker después de obtener la referencia luego no soy capaz de obtener la variable de año, monthOfYear y dayOfMonth en que la función «init».
    • Por Tu respuesta veo de cerca a la solución. Acabo de Ver a mi Actualizados pregunta.

  2. 1

    juego como este

    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    
            selectedDate = Integer.toString(mMonth)+"/"+Integer.toString(mDay)+"/"+Integer.toString(mYear);
            date_text.setText(selectedDate);
            System.out.println("selected date is:"+selectedDate);
            edittext.setText(selectedDate );
        }
    };
    • Por favor, consulte la actualización de la pregunta.
    • ¿qué es la tierra de nuevo para que
    • Si puedo cambiar el Valor del Mes o la fecha o año, debe ser reflacted en el editText ?
    • usted obtener valor a partir de la fecha del selector de comprobarlo una vez (impresión de valor)..
    • Yo no m obteniendo el valor. He comprobado. pero no funciona.
    • a continuación, problema en el selector de fecha solamente..
    • hacerlo selector de fecha a través de código, si usted no sabe venir a la sala de chat voy a contar …
    • Por favor, dime Cómo configurar esto. como no soy capaz de llegar.
    • fecha de creación del selector de cuadro de diálogo a través de código .. revise este enlace stackoverflow.com/questions/3299392/date-picker-in-android

  3. 1

    Inicializar estas variables a nivel mundial en su actividad ,

    private EditText zopenDate;
            Button calendar;
    
            private int mYear;
            private int mMonth;
            private int mDay;
            private DatePickerDialog.OnDateSetListener mDateSetListener;

    dentro de la instancia

    calendar=(Button)findViewById(R.id.datePicker);
    zopenDate=(EditText)findViewById(R.id.dateSelectionEditText);

    dentro de su ejemplo de uso de este tipo de oyentes,

    mDateSetListener =
                new DatePickerDialog.OnDateSetListener() {
    
                    public void onDateSet(DatePicker view, int year, 
                                          int monthOfYear, int dayOfMonth) {
                        mYear = year;
                        mMonth = monthOfYear;
                        mDay = dayOfMonth;
                        updateDisplay();
                    }
                };
    
    
    
    calendar.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View v) {
                        showDialog(DATE_DIALOG_ID);
                    }
                });
    
    
    
    
    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 (this method is below)
                updateDisplay();

    la función updatedisplay() fuera de createInstance(),

    private void updateDisplay() {
            zopenDate.setText(
                new StringBuilder()
                        //Month is 0 based so add 1
                        .append(mMonth + 1).append("-")
                        .append(mDay).append("-")
                        .append(mYear).append(" "));
        }
    • gracias por la respuesta.
  4. 0

    Usar esto para reflejar la fecha de edición de texto

    private OnDateSetListener setDOB = new OnDateSetListener() {
    
                @Override
                public void onDateSet(DatePicker view, int year, int month,
                        int dayOfMonth) {
                    datePicker = (EditText) findViewById(R.id.dateOB);
                    datePicker.setText(" " + dayOfMonth + "/" + (month + 1) + "/"
                            + year + "");
    
                }
            };
    • si puedo cambiar el datePickerValue, a continuación, debe reflact en el editText en ese momento.
    • i m no estoy seguro, pero trate de ontouch/evento onChange para datePicker

Dejar respuesta

Please enter your comment!
Please enter your name here