¿Puede uno publicar código de ejemplo para un selector de fecha simple en Android.Selector de fecha en Android
Si el selector de fecha no es posible en Android, se necesita una opción para elegir una fecha.
¿Puede uno publicar código de ejemplo para un selector de fecha simple en Android.Selector de fecha en Android
Si el selector de fecha no es posible en Android, se necesita una opción para elegir una fecha.
Uso del DatePicker
http://developer.android.com/reference/android/widget/DatePicker.html
Es dotados desde el API de nivel 1
Aquí un ejemplo de cómo utilizar la DatePickerDialog.
Primero se debe agregar 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 que tiene que inicializar el botón de Vista de Texto y en el método onCreate de su diseño. Es necesario este variables de clase
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();
}
método UpdateDisplay:
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(" "));
}
El oyente de devolución de llamada 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();
}
};
El método onCreateDialog, 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;
}
Espero que ayuda, lo usó y funciona bien.
Ejemplo de
http://developer.android.com/guide/tutorials/views/hello-datepicker.html
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>
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);
}
}
Lamento haber visto esto y tuve que dar algunos comentarios. 1. Manejador en el constructor Aahh !!!? No. nunca use constructores con componentes Lifecycled. 2. Utilice constantes para los valores de Bundle, es menos probable que cometa errores. 3. Los manipuladores son un poco piratas, lo que no funcionará si su actividad se recicla. Así que tal vez busque un mejor enfoque para esto. –
¿Cuál es el problema al usarlo (The Handler)? –
Aquí es una versión actualizada que documenta la compatibilidad hacia atrás con la biblioteca de soporte:
http://developer.android.com/guide/topics/ui/controls/pickers.html#DatePicker
La respuesta aceptada no lo hace manejar al usuario haciendo clic en cancelar en th e selector de fecha. En ese caso, nada debe actualizarse.
Yo quería lo mismo que OP, pero solo quería que estuviera en línea. Esto es lo que solía:
Crear la devolución de llamada que se llama cuando se hace clic en el botón selector de fechas OK:
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 en el que 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();
}
});
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" />
uso: import java.util.Calendario;
en su lugar: import android.icu.util.Calendar.
este paquete solo es compatible con API de nivel 24 no inferior a eso. Este es el paquete que necesitamos usar para obtener el calendario en el cuadro de diálogo,
esto funciona bien.
¿Cómo usar esto en un fragmento? – Milad