web-dev-qa-db-fra.com

Android: Dialogue DatePicker et DatePicker

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 enter image description here

enter image description here

et quand je clique sur définir, je voulais prendre en compte la valeur en millisecondes de ce DatePickerDialog

9
lemoncodes

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;
}
}
12
januprasad

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) {

    }

}
13
Hpsaturn

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


    }

}
4
Salim

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();
1
Bhavinkumar Patel

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");
    }
}
1
Faraz Ahmed

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;
}
1
Abhishek Patil

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()
        }
    }
0
Aklesh Singh
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();      
0
Karan Datwani