Установить дату в окне выбора даты

У меня есть дата в моей кнопке (5-12-2031), когда я нажимаю кнопку, я хочу показать средство выбора даты с датой, которая у меня есть в моей кнопке. В Stackoverflow i found to set the time pickerAndroid: установка времени в средстве выбора времени со временем, отображаемым в текстовом представлении, я пробовал то же самое, но средство выбора даты не отображалось.

Мой код:

Calendar mDateCalender = Calendar.getInstance();
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.add_details_main_layout);


    date.setOnClickListener(new onClickListener) {
    public void onClick(){

    new DatePickerDialog(AddDetailsActivity.this, onDateListener,
                        mDateCalender.get(Calendar.YEAR), mDateCalender.get(Calendar.MONTH),
                        mDateCalender.get(Calendar.DAY_OF_MONTH)).show();
    }
    }
}


 DatePickerDialog.OnDateSetListener onDateListener = new OnDateSetListener() {

    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        date.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);

        String dateFormat = mOfflineDatas.get(0).getOnsket_utfort();
        String[] getDates = dateFormat.split("-");

        Toast.makeText(getApplicationContext(), "" + dateFormat, Toast.LENGTH_LONG).show();

        mDateCalender.set(Calendar.DAY_OF_MONTH, Integer.valueOf(getDates[0]));
        mDateCalender.set(Calendar.MONTH, Integer.valueOf(getDates[1]));
        mDateCalender.set(Calendar.YEAR, Integer.valueOf(getDates[2]));

    }
};

мой dateFromat = 5-12-2013 правильно разбивается.

Какие изменения мне нужно изменить в этом, кто-нибудь предложит некоторые идеи.


person Vini    schedule 05.12.2013    source источник
comment
Вы указываете дату в вызове конструктора DatePickerDialog. Если вы хотите указать другую дату, просто измените все, что вы передаете конструктору.   -  person laalto    schedule 05.12.2013
comment
@laalto, пожалуйста, приведите пример или ссылку...   -  person Vini    schedule 05.12.2013


Ответы (4)


это может тебе помочь...

yourButton.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        showDatePickerDialog(yourButton.getText().toString());
    }
});

private void showDatePickerDialog(String date) {
    // here date is 5-12-2013
    String[] split = date.split("-");
    int day = Integer.valueOf(split[0]);
    int month = Integer.valueOf(split[1]);
    int year = Integer.valueOf(split[2]);
    OnDateSetListener dateSetListener = new OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear,
                int dayOfMonth) {
            // TODO Auto-generated method stub

        }
    };

    DatePickerDialog datePickerDialog = new DatePickerDialog(this,
            dateSetListener, year, month, day);
    datePickerDialog.show();
}
person Gopal Gopi    schedule 05.12.2013
comment
@Эла конечно. вы анализируете строку даты из текста кнопки и назначаете дату календарю в onDateSetListner. Слушатель будет вызван после открытия диалога и выбора пользователем даты. ранее, у календаря будет дата по умолчанию. поэтому к тому времени, когда отображается диалоговое окно, у календаря есть дата по умолчанию, так как Listener будет вызываться позже... сначала получите дату и передайте ее конструктору DatePickerDialog... - person Gopal Gopi; 05.12.2013

Попробуй это..

Глобальный:

static final int DATE_DIALOG_ID = 999;

private int myear;
private int mmonth;
private int mday;

При создании:

    final Calendar c = Calendar.getInstance();
    myear = c.get(Calendar.YEAR);
    mmonth = c.get(Calendar.MONTH);
    mday = c.get(Calendar.DAY_OF_MONTH);

       btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

            String[] str = btn.getText().toString().trim().split("-");

            mday = Integer.parseInt(str[0]);
            mmonth = Integer.parseInt(str[1]);
            myear = Integer.parseInt(str[2]);

                showDialog(DATE_DIALOG_ID);

            }

        });

Метод вне OnCreate():

@Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case DATE_DIALOG_ID:
            // set date picker as current date
            DatePickerDialog _date =   new DatePickerDialog(this, datePickerListener, myear,mmonth,
                    mday){

            };
            return _date;
        }
        return null;
    }

ИЗМЕНИТЬ 1:

date.setOnClickListener(new onClickListener) {
public void onClick(){


            String[] str = date.getText().toString().trim().split("-");

            mday = Integer.parseInt(str[0]);
            mmonth = Integer.parseInt(str[1]);
            myear = Integer.parseInt(str[2]);
new DatePickerDialog(AddDetailsActivity.this, onDateListener,
                    myear, mmonth,
                    mday).show();
}
}
person Hariharan    schedule 05.12.2013
comment
Спасибо за ваш ответ @Gopal предоставьте такой же, как у вас, я попробую этот .... - person Vini; 05.12.2013

Это DatePicker.init, где вы можете установить его...

Или, чтобы установить дату, вы можете использовать элемент управления календарем, как показано в образец для разработчиков Android. См. шаги 4–6.

Вот еще один пример записи в блоге на эту тему.

или вы можете использовать следующее событие нажатия кнопки

Calendar cal=Calendar.getInstance(Locale.ENGLISH);
dp.init(cal.getTime().getYear()+1900, cal.getTime().getMonth(), cal.getTime().getDay(), this);
person Sanket Shah    schedule 05.12.2013
comment
уже пройти через эти ссылки, но в вашем коде, как передать мои значения даты..... - person Vini; 05.12.2013
comment
вы можете передать дату кнопки как целочисленное значение. - person Sanket Shah; 05.12.2013

Если вы используете фрагменты, этот код может вам помочь.

mLesson_Date = (TextView) rootView.findViewById(R.id.Lesson_Date);

--------------------------------------------------------------------
mLesson_DateBtn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                // showDialog(DATE_DIALOG_ID);
                DialogFragment newFragment1 = new DatePickerFragment(
                        mLesson_Date);// Here you are passing the TextView Object to DatePickerFragment by calling the constructor 
                newFragment1.show(getFragmentManager(), "datePicker");
            }
        });
--------------------------------------------------------------------

public static class DatePickerFragment extends DialogFragment implements
            DatePickerDialog.OnDateSetListener {

        public EditText editText;
        DatePicker dpResult;
        TextView sample;

        public DatePickerFragment() {
            // TODO Auto-generated constructor stub.
        }

        public DatePickerFragment(TextView setTimeView) {
            // TODO Auto-generated constructor stub.
            this.sample = setTimeView;
        }

        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);
            // return new DatePickerDialog(getActivity(),
            // (EditSessionActivity)getActivity(), year, month, day);

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

            sample.setText(String.valueOf(day) + "/"
                    + String.valueOf(month + 1) + "/" + String.valueOf(year));
            // set selected date into datepicker also

        }
    }
person Nagaraja    schedule 05.12.2013
comment
Это хорошо, но я думаю, что автор искал, как предварительно заполнить DatePicker указанной датой. Этот пример этого не делает и просто записывает выбранную дату в TextView (он просто предварительно заполняет дату в DatePicker с текущей датой, а не какой-либо другой указанной датой). - person clamum; 22.04.2017