2015-11-18 2 views
0

привет, ребята Мне нужна помощь в диалоговом окне datepicker, потому что я сохранял значения этого значения в переменных внутри onDateSet: «selectedYear», «selectedMonth», «selectedDay» Это переменная, которая объявлена как частный в классе. Моя проблема после форматирования даты с использованием функции даты даты значения переменной возвращаются к пустым, поэтому я создал новую функцию, где я могу сохранить их, которые, как я знаю, являются беспорядочным движением, я хотел бы знать, почему переменные становится пустым и что лучше для этого кода. спасибо в продвинутом состояниизначения диалогового окна даты пикета становятся пустыми

datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { 
      @Override 
      public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
       Calendar newDate = Calendar.getInstance(); 
       newDate.set(year, monthOfYear, dayOfMonth); 

       selectedYear = year; 
       selectedMonth = monthOfYear; 
       selectedDay = dayOfMonth; 
       setDateEdit.setText(formatDate(selectedYear, selectedMonth, selectedDay)); 
      } 
     }, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH)); 


private String formatDate(int year, int month, int day) { 
     saveDateToVar(year,month,day); 
     Calendar cal = Calendar.getInstance(); 
     cal.setTimeInMillis(0); 
     cal.set(year, month, day); 
     Date date = cal.getTime(); 
     SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy"); 
     return sdf.format(date); 
    } 



    private void saveDateToVar(int year, int month, int day){ 
     savedYear = year; 
     savedDay = day; 
     savedMonth = month; 
    } 
+0

Вы можете использовать http://stackoverflow.com/questions/32960426/datepicker-dialog-box-does-not-open-on-click/32961832#32961832 для диалогового окна piker даты и времени. – Sam

ответ

0

Используйте этот код и изменяйте в соответствии с вашими потребностями. Это поможет вам выбрать дату, чтобы выбрать дату.

public class DateDialog extends DialogFragment implements DatePickerDialog.OnDateSetListener { 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     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(), this, year, month, day); 
    } 

    public void onDateSet(DatePicker view, int year, int month, int day) { 
     month = month + 1; 
     textView.setText(year + "-" + month + "-" + day); 
    } 
} 

Вы можете установить либо дату, либо месяц или год отдельно с кодом. Вы должны вызвать этот метод таким образом.

btn_showDate.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      DialogFragment newFragment = new DateDialog(); 
      newFragment.show(getActivity().getSupportFragmentManager(), "datePicker"); 

     } 
    }); 

Когда вы нажимаете «ОК», автоматически отображается дата, указанная в textView.

Счастливый код и счастливы, чтобы помочь. :)

+0

в моем коде. Я собираюсь использовать «selectedYear», «selectedMonth», «selectedDay» для других целей, поэтому мне нужно получить его, используя другие функции. Спасибо, в любом случае. –

Смежные вопросы