web-dev-qa-db-fra.com

Android comment afficher DatePicker in Fragment?

Je suis nouveau sur Android Fragments et je veux savoir que je peux montrer ou implémenter DatePicker en simple Fragmentet non FragmentActivity

Par exemple, le nom de ma classe est:

public class FragmentAddCard extends Fragment {
}

Merci.

12
user3555472

Dans votre bouton, cliquez sur appeler le DateFragment comme ceci

   dob.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            DialogFragment newFragment = new SelectDateFragment();
            newFragment.show(getFragmentManager(), "DatePicker");

        }
    });

Voici l'extrait de code pour DateFragment

  public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {

        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
        final Calendar calendar = Calendar.getInstance();
        int yy = calendar.get(Calendar.YEAR);
        int mm = calendar.get(Calendar.MONTH);
        int dd = calendar.get(Calendar.DAY_OF_MONTH);
        return new DatePickerDialog(getActivity(), this, yy, mm, dd);
        }

        public void onDateSet(DatePicker view, int yy, int mm, int dd) {
            populateSetDate(yy, mm+1, dd);
        }
        public void populateSetDate(int year, int month, int day) {
            dob.setText(month+"/"+day+"/"+year);
            }

    }
40
Don Chakkappan

Ceci est un autre exemple:

Calendar cal = Calendar.getInstance(TimeZone.getDefault()); // Get current date

// Create the DatePickerDialog instance
DatePickerDialog datePicker = new DatePickerDialog(this,
                    R.style.AppBlackTheme, datePickerListener,
                    cal.get(Calendar.YEAR), 
                                        cal.get(Calendar.MONTH),
                    cal.get(Calendar.DAY_OF_MONTH));
            datePicker.setCancelable(false);
            datePicker.setTitle("Select the date");
datePicker.show();

// Listener
private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {

    // when dialog box is closed, below method will be called.
    public void onDateSet(DatePicker view, int selectedYear,
            int selectedMonth, int selectedDay) {
        String year1 = String.valueOf(selectedYear);
        String month1 = String.valueOf(selectedMonth + 1);
        String day1 = String.valueOf(selectedDay);
        TextView tvDt = (TextView) findViewById(R.id.tvDate);
        tvDt.setText(day1 + "/" + month1 + "/" + year1);

    }
};
9
TeRRo

Tout d’abord, je peux dire que la réponse sélectionnée fonctionne bien. C’est une bonne approche. Mais si vous voulez utiliser MaterailDatePicker avec Fragment. J'ai trouvé une solution. Essayez de suivre pour définir DatePicker dans Fragment.

Gradle

dependencies {
  compile 'com.wdullaer:materialdatetimepicker:3.1.3'
}

DatePickerFragment

package com.wdullaer.datetimepickerexample;

import Android.app.Fragment;
import Android.graphics.Color;
import Android.os.Bundle;
import Android.view.LayoutInflater;
import Android.view.View;
import Android.view.ViewGroup;
import Android.widget.Button;
import Android.widget.CheckBox;
import Android.widget.TextView;

import com.wdullaer.materialdatetimepicker.date.DatePickerDialog;

import Java.util.Calendar;

/**
 * A simple {@link Fragment} subclass.
 */
public class DatePickerFragment extends Fragment implements DatePickerDialog.OnDateSetListener {

    private TextView dateTextView;
    private CheckBox modeDarkDate;
    private CheckBox modeCustomAccentDate;
    private CheckBox vibrateDate;
    private CheckBox dismissDate;
    private CheckBox titleDate;
    private CheckBox showYearFirst;
    private CheckBox showVersion2;
    private CheckBox limitSelectableDays;
    private CheckBox highlightDays;

    public DatePickerFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.datepicker_layout, container, false);

        // Find our View instances
        dateTextView = (TextView) view.findViewById(R.id.date_textview);
        Button dateButton = (Button) view.findViewById(R.id.date_button);
        modeDarkDate = (CheckBox) view.findViewById(R.id.mode_dark_date);
        modeCustomAccentDate = (CheckBox) view.findViewById(R.id.mode_custom_accent_date);
        vibrateDate = (CheckBox) view.findViewById(R.id.vibrate_date);
        dismissDate = (CheckBox) view.findViewById(R.id.dismiss_date);
        titleDate = (CheckBox) view.findViewById(R.id.title_date);
        showYearFirst = (CheckBox) view.findViewById(R.id.show_year_first);
        showVersion2 = (CheckBox) view.findViewById(R.id.show_version_2);
        limitSelectableDays = (CheckBox) view.findViewById(R.id.limit_dates);
        highlightDays = (CheckBox) view.findViewById(R.id.highlight_dates);

        // Show a datepicker when the dateButton is clicked
        dateButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Calendar now = Calendar.getInstance();
                DatePickerDialog dpd = DatePickerDialog.newInstance(
                        DatePickerFragment.this,
                        now.get(Calendar.YEAR),
                        now.get(Calendar.MONTH),
                        now.get(Calendar.DAY_OF_MONTH)
                );
                dpd.setThemeDark(modeDarkDate.isChecked());
                dpd.vibrate(vibrateDate.isChecked());
                dpd.dismissOnPause(dismissDate.isChecked());
                dpd.showYearPickerFirst(showYearFirst.isChecked());
                dpd.setVersion(showVersion2.isChecked() ? DatePickerDialog.Version.VERSION_2 : DatePickerDialog.Version.VERSION_1);
                if (modeCustomAccentDate.isChecked()) {
                    dpd.setAccentColor(Color.parseColor("#9C27B0"));
                }
                if (titleDate.isChecked()) {
                    dpd.setTitle("DatePicker Title");
                }
                if (highlightDays.isChecked()) {
                    Calendar date1 = Calendar.getInstance();
                    Calendar date2 = Calendar.getInstance();
                    date2.add(Calendar.WEEK_OF_MONTH, -1);
                    Calendar date3 = Calendar.getInstance();
                    date3.add(Calendar.WEEK_OF_MONTH, 1);
                    Calendar[] days = {date1, date2, date3};
                    dpd.setHighlightedDays(days);
                }
                if (limitSelectableDays.isChecked()) {
                    Calendar[] days = new Calendar[13];
                    for (int i = -6; i < 7; i++) {
                        Calendar day = Calendar.getInstance();
                        day.add(Calendar.DAY_OF_MONTH, i * 2);
                        days[i + 6] = day;
                    }
                    dpd.setSelectableDays(days);
                }
                dpd.show(getFragmentManager(), "Datepickerdialog");
            }
        });

        return view;
    }

    @Override
    public void onResume() {
        super.onResume();
        DatePickerDialog dpd = (DatePickerDialog) getFragmentManager().findFragmentByTag("Datepickerdialog");
        if(dpd != null) dpd.setOnDateSetListener(this);
    }

    @Override
    public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) {
        String date = "You picked the following date: "+dayOfMonth+"/"+(++monthOfYear)+"/"+year;
        dateTextView.setText(date);
    }
}
2
Aditya Vyas-Lakhan
  button_name.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {

        switch (event.getAction()){
            case MotionEvent.ACTION_DOWN:
                DatePickerDialog datePickerDialog = DatePickerDialog.newInstance(new DatePickerDialog.OnDateSetListener() {
                     @Override
                     public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) {
                         String years=""+year;
                         String months=""+(monthOfYear+1);
                         String days=""+dayOfMonth;
                         if(monthOfYear>=0 && monthOfYear<9){
                             months="0"+(monthOfYear+1);
                         }
                         if(dayOfMonth>0 && dayOfMonth<10){
                             days="0"+dayOfMonth;

                         }
                         race_date.setText(months+"/"+days+"/"+years);
                     }
                 }, now.get(Calendar.YEAR),
                        now.get(Calendar.MONTH),
                        now.get(Calendar.DAY_OF_MONTH));
                datePickerDialog.setMinDate(now);
                datePickerDialog.show(getActivity().getFragmentManager(), "Datepicker");
                break;
        }
        return false;
    }
});
0
Raveendra