J'ai ce code ici dans le menu des options
Dialog dialog = new Dialog(ScheduleActivity.this);
dialog.setTitle("Add Event");
dialog.setContentView(R.layout.add_even_on);
Button datePicker = (Button) dialog.findViewById(R.id.datePicker);
final DialogFragment dateFrag = new MyDatePicker();
datePicker.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
dateFrag.show(getSupportFragmentManager(), "datePicker");
}
});
dialog.show();
lorsque vous cliquez sur "Ajouter événement" dans le menu d'options, un dialogue apparaît, avec un bouton affichant un DatePickerDialog et à côté, un TextView qui reflète la date choisie dans le DatePickerDialog , voici le cours du développeur d’Androids sur l’utilisation de DatePickerDialog.
class MyDatePicker extends DialogFragment implements DatePickerDialog.OnDateSetListener {
int pYear;
int pDay;
int pMonth;
@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) {
pYear = year;
pDay = day;
pMonth = month;
}
}
Donc, mon problème est que comment obtenir la valeur en millièmes de secondes lorsque je clique sur "Définir" sur le DatePickerDialog qui le ferme automatiquement et retourne à mon dialogue qui contient le bouton qui ouvre le DatePickerDialog et une vue de texte qui reflète la date choisi le DatePickerDialog ... je ne montrerai pas celui que j'ai choisi à l'intérieur du DatePickerDialog ...
Voici une photo de ce que je veux dire,
Ainsi, lorsque je clique sur le bouton Choisir une date, une boîte de dialogue DatePickerDialog apparaît comme sur l’image suivante
et quand je clique sur définir, je voulais prendre en compte la valeur en millisecondes de ce DatePickerDialog
Ici, je fournis du code en espérant que cela vous aide ..
public class NewReminder extends Activity {
private static final int DATE_DIALOG_ID = 1;
private int year;
private int month;
private int day;
EditText editTextDate;
private String currentDate;
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.addnewreminder);
initialize();
context = getApplicationContext();
OnClickListener listenerDate = new OnClickListener() {
@Override
public void onClick(View arg0) {
final Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
showDialog(DATE_DIALOG_ID);
}
};
editTextDate.setOnClickListener(listenerDate);
}
private void initialize() {
// TODO Auto-generated method stub
editTextDate = (EditText) findViewById(R.id.editTextDate);
}
private void updateDisplay() {
currentDate = new StringBuilder().append(day).append(".")
.append(month + 1).append(".").append(year).toString();
Log.i("DATE", currentDate);
}
OnDateSetListener myDateSetListener = new OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int i, int j, int k) {
year = i;
month = j;
day = k;
updateDisplay();
editTextDate.setText(currentDate);
}
};
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
return new DatePickerDialog(this, myDateSetListener, year, month,
day);
}
return null;
}
}
Les anciens dialogues sont obsolètes. Implémente des fragments:
Migrer votre activité en fragment d'activité:
public class YourActivity extends FragmentActivity
Créer un dialogue de fragment:
public class TimePickerFragment extends DialogFragment {
private OnDateSetListener listener;
public TimePickerFragment(OnDateSetListener listener) {
this.listener=listener;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current time as the default values for 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 TimePickerDialog and return it
return new DatePickerDialog(getActivity(), listener, year,month,day);
}
}
Implémente l'interface (package: import Android.app.DatePickerDialog.OnDateSetListener):
public class YourActivity extends FragmentActivity implements OnDateSetListener{
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
}
}
Ajouter une fonction showDialog:
public class YourActivity extends FragmentActivity implements OnDateSetListener{
showDateDialog(){
FragmentManager fm = getSupportFragmentManager();
TimePickerFragment newFragment = new TimePickerFragment(this);
newFragment.show(fm, "date_picker");
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
}
}
En XML ajouter un TextView et un bouton
<TextView
Android:id="@+id/searchText"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="TextView" />
<Button
Android:id="@+id/search"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Search" />
Ajouter le code suivant dans un fichier Java
public class DatePickerDialogExample extends Activity {
TextView txtDate;
private int mYear, mMonth, mDay, mHour, mMinute;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txtDate = (TextView) findViewById(R.id.searchText);
Button search = (Button) findViewById(R.id.search);
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Process to get Current Date
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
// Launch Date Picker Dialog
DatePickerDialog dpd = new DatePickerDialog(PrayTimeActivity.this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
// Display Selected date in textbox
txtDate.setText(dayOfMonth + "-"
+ (monthOfYear + 1) + "-" + year);
}
}, mYear, mMonth, mDay);
dpd.show();
}
});
}
}
Essayez ce code, c'est du travail:
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dpd = new DatePickerDialog(getActivity(),
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
birth_Date.setText(dayOfMonth + "-"
+ (monthOfYear + 1) + "-" + year);
}
}, mYear, mMonth, mDay);
dpd.show();
Voici ma fonction d'assistance qui obtient le contexte et TextView en tant que paramètre et définit la date sur cette vue de texte lorsque l'utilisateur sélectionne une date:
public static void showDate(final Context context, final TextView textView) {
if (textView != null) {
final Calendar myCalendar = Calendar.getInstance();
DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
// TODO Auto-generated method stub
myCalendar.set(Calendar.YEAR, year);
myCalendar.set(Calendar.MONTH, monthOfYear);
myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
String myFormat = "MM/dd/yy"; // In which you need put here
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
//UIHelper.showLongToastInCenter(context, sdf.format(myCalendar.getTime()));
textView.setText(sdf.format(myCalendar.getTime()));
}
};
new DatePickerDialog(context, date, myCalendar.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)).show();
} else {
UIHelper.showLongToastInCenter(context, "Unable to show Date picker");
}
}
Vous pouvez essayer ce code .. il sera sûrement utile pour vous .. Pas de doute!
protected Dialog onCreateDialog(int id) {
Calendar c=Calendar.getInstance();
int Sysday=c.get(Calendar.DAY_OF_MONTH);
int Sysmonth=c.get(Calendar.MONTH);
int Sysyear=c.get(Calendar.YEAR);
int Sysmin=c.get(Calendar.MINUTE);
int Syshour=c.get(Calendar.HOUR);
switch (id) {
case TIME_DIALOG:
return new TimePickerDialog(this, myTimePicker , Syshour, Sysmin, false);
case DATE_DIALOG:
return new DatePickerDialog(this, myDatePicker, Sysyear, Sysmonth, Sysday);
}
return null;
}
Utilisez-le comme ça à Koltin
DatePickerDialog(this as Activity, DatePickerDialog.OnDateSetListener { p0, y, m, _ -> func.invoke(y, m + 1) }, c.get(Calendar.YEAR),
c.get(Calendar.MONTH),
c.get(Calendar.DAY_OF_MONTH))
.show()
Utilisez-le de n'importe où
tvDateFrom.click {
showDatePicker(c) { y, m ->
Utils.debugger("DATE FROM ", " y + $y m $m")
tvDateFrom.text = "$m-$y".toDate()
}
}
Calendar c1 = Calendar.getInstance();
int year = c1.get(Calendar.YEAR);
int month = c1.get(Calendar.MONTH);
int day = c1.get(Calendar.DAY_OF_MONTH);
DatePickerDialog.OnDateSetListener myDateListener = new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
if(arg0.isShown()){
//do further code here
}
}
};
DatePickerDialog dp = new DatePickerDialog(YourActivity.this, myDateListener, year, month, day);
dp.show();