2016-03-22 28 views
0

ユーザーが日付を選択して日付ピッカーダイアログを再度開くと、現在の日付に設定されます...選択された日付ではない...ユーザーがdatepickerダイアログを再オープンした後、私のコードです選択した日付を日付ピッカーダイアログに設定します

@Override 
    public void onClick(View v) { 
     Dialog.Builder builder = null; 
     Calendar c = Calendar.getInstance(); 
     int year = c.get(Calendar.YEAR)+10; 
     c.set(year, c.get(Calendar.MONTH), c.get(Calendar.DATE)); 
     builder = new DatePickerDialog.Builder(R.style.CustomStyle_DatePicker) { 
      @Override 
      public void onPositiveActionClicked(DialogFragment fragment) { 
       DatePickerDialog dialog = (DatePickerDialog) fragment.getDialog(); 
       String date = dialog.getFormattedDate(SimpleDateFormat.getDateInstance()); 
       selected_date.setText(date); 
       super.onPositiveActionClicked(fragment); 
      } 

      @Override 
      public void onNegativeActionClicked(DialogFragment fragment) { 
       super.onNegativeActionClicked(fragment); 
      } 
     }.dateRange(System.currentTimeMillis() - 1000, c.getTimeInMillis()); 
     builder.positiveAction("OK") 
       .negativeAction("CANCEL"); 
     DialogFragment fragment = DialogFragment.newInstance(builder);; 
     fragment.show(getFragmentManager(), null); 
    } 

私は周りを検索しましたが、何か助けてもらえませんでしたか?

答えて

2

これをグローバルに宣言します。そして、

Calendar selectedDate = Calendar.getInstance(); 

ビルダーにあなたの日付を設定し、ユーザーは以下のようにselectedDateする日付を選択したときに保存します。これは、ユーザーが日付を選択するまで現在の日付を設定します。

@Override 
    public void onClick(View v) { 
     Dialog.Builder builder = null; 
     Calendar c = Calendar.getInstance(); 
     int year = c.get(Calendar.YEAR)+10; 
     c.set(year, c.get(Calendar.MONTH), c.get(Calendar.DATE)); 
     builder = new DatePickerDialog.Builder(R.style.CustomStyle_DatePicker) { 
      @Override 
      public void onPositiveActionClicked(DialogFragment fragment) { 
       DatePickerDialog dialog = (DatePickerDialog) fragment.getDialog(); 
       String date = dialog.getFormattedDate(SimpleDateFormat.getDateInstance()); 
       selected_date.setText(date); 
       selectedDate.set(dialog.getYear(),dialog.getMonth(), dialog.getDay()); 
       super.onPositiveActionClicked(fragment); 
      } 

      @Override 
      public void onNegativeActionClicked(DialogFragment fragment) { 
       super.onNegativeActionClicked(fragment); 
      } 
     }.dateRange(System.currentTimeMillis() - 1000, c.getTimeInMillis()).date(selectedDate.get(Calendar.DATE), 
         selectedDate.get(Calendar.MONTH) 
         , selectedDate.get(Calendar.YEAR)); 
     builder.positiveAction("OK") 
       .negativeAction("CANCEL"); 
     DialogFragment fragment = DialogFragment.newInstance(builder); 
     fragment.show(getFragmentManager(), null); 
    } 
+0

ありがとう...もう一度、あなたはいつも私のプロジェクトで私を助けます:) – meeftah

+0

そしてedittextからdatepickerに日付を設定したいのであれば、あなたにはあまり問題はありません... – meeftah

+0

edittextからselectedDateに割り当てますか? – Dhina

0
DatePickerDialog datePickerDialog ; 


    private void initialiseDatePicker(){ 
     final Calendar c = Calendar.getInstance(); 
     int mYear; 
     int mMonth; 
     int mDay; 

     //this is previous set date 
     String date = dobButton.getText().toString().trim(); 
     //this is previous set date 

if (date != null && date.length() > 0) { 

//if you have previous set date 
      String data[] = date.split("-"); 
      mYear = Integer.parseInt(data[2]); 

      mMonth = Integer.parseInt(data[1]); 
      mMonth = mMonth - 1; 
      mDay = Integer.parseInt(data[0]); 
     } else { 

//if you dont have previous set date then display current date 
      mYear = c.get(Calendar.YEAR); 
      mYear = mYear; 
      mMonth = c.get(Calendar.MONTH); 

      mDay = c.get(Calendar.DAY_OF_MONTH); 
     } 

     int mYear1 = c.get(Calendar.YEAR); 
     int mMonth1 = c.get(Calendar.MONTH); 
     int mDay1 = c.get(Calendar.DAY_OF_MONTH); 

     Calendar maxDate = Calendar.getInstance(); 
     maxDate.set(mYear1, mMonth1, mDay1); 

     Calendar minDate = Calendar.getInstance(); 
     minDate.set(mYear1 - 150, mMonth1, mDay1); 

     datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { 

      @Override 
      public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
       String dateOfBirth1 = dayOfMonth + "-" + (monthOfYear + 1) + "-" + year; 
       dobButton.setText(dateOfBirth1); 

      } 
     }, mYear, mMonth, mDay); 

     final DatePicker datePicker = datePickerDialog.getDatePicker(); 

     datePicker.setMinDate(minDate.getTimeInMillis()); 
     datePicker.setMaxDate(maxDate.getTimeInMillis()); 




     datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 
         datePicker.clearFocus(); 

          int year = datePicker.getYear(); 
          int monthOfYear=datePicker.getMonth(); 
          int dayOfMonth = datePicker.getDayOfMonth(); 

         String dateOfBirth1 = dayOfMonth + "-" + (monthOfYear + 1) + "-" + year; 

         dobButton.setText(dateOfBirth1); 

         } 
        }); 



     datePickerDialog.setOnCancelListener(new OnCancelListener() { 

      @Override 
      public void onCancel(DialogInterface dialog) { 
       dobButton.setText(dateOfBirth); 
      } 
     }); 

    } 
+0

私がこのコードを使用すると、今までに書いたコード全体が変更されます...私のコードに入れられるよう調整しますか? – meeftah

関連する問題