2016-10-07 4 views
22

사용자가 날짜 (dd/mm/yyyy)를 선택하도록 요구하는 앱을 개발 중입니다. 버튼 클릭시 DatePicker가있는 대화 상자를 표시하려고합니다. 날짜를 선택하면 EditText에 표시되어야합니다.버튼 클릭시 DatePickerDialog를 표시하는 방법은 무엇입니까?

나는 안드로이드 스튜디오 2.2을 사용하고, 최소 SDK를 프로젝트는 23

친절

필요한 코드를 수행하는 데 도움이됩니다.

+1

안녕보기, 당신은 당신을 도울 수있는이 링크 http://stackoverflow.com/questions에 시도 할 수 있습니다/14933330/datepicker-how-to-popup-datepicker-when-edittext 클릭시 –

+1

[Datepicker : edittext를 클릭 할 때 datepicker를 팝업하는 방법] (http://stackoverflow.com/questions/14933330/datepicker) -how-to-popup-datepicker-when-click-on-edittext) – poring91

+0

http://blog.nkdroidsolutions.com/android-custom-date-picker-dialog-example/ – duggu

답변

3

다음 코드는 작동의 클릭 이벤트 리스너에 당신의 대화 ..

datePickerButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      showDialog(0); 
     } 
    }); 

@Override 
@Deprecated 
protected Dialog onCreateDialog(int id) { 
    return new DatePickerDialog(this, datePickerListener, year, month, day); 
} 

private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() { 
    public void onDateSet(DatePicker view, int selectedYear, 
          int selectedMonth, int selectedDay) { 
     day = selectedDay; 
     month = selectedMonth; 
     year = selectedYear; 
     datePickerButton.setText(selectedDay + "/" + (selectedMonth + 1) + "/" 
       + selectedYear); 
    } 
}; 
5
DatePickerDialog StartTime = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { 
      public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
       Calendar newDate = Calendar.getInstance(); 
       newDate.set(year, monthOfYear, dayOfMonth); 
       activitydate.setText(dateFormatter.format(newDate.getTime())); 
      } 

     }, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH)); 

    btn_checkin.setOnClickListener(new View.OnClickListener() { 
              @Override 
              public void onClick(View v) { 
    StartTime .show(): 

}); 
7

저에게 적합합니다. 앞으로 선택할 시간을 선택하려면 maxDate를 삭제해야합니다. 당신의 build.gradle에서

btnDate.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
           DialogFragment newFragment = new DatePickerFragment(); 
            newFragment.show(getSupportFragmentManager(), "datePicker"); 
          } 
         }); 

      public static class DatePickerFragment 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); 
         DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, year, month, day); 
         dialog.getDatePicker().setMaxDate(c.getTimeInMillis()); 
         return dialog; 
        } 

        public void onDateSet(DatePicker view, int year, int month, int day) { 
         btnDate.setText(ConverterDate.ConvertDate(year, month + 1, day)); 
        } 
       } 
+1

좋아 보인다! ALLOW_PAST는 무엇입니까? 케일러 –

+0

당신은 그것을 사용하지 않아도됩니다. 그것은 나를위한 것이 었습니다. 이 – Kayra

28

enter image description here

I. 시간 24.2.1

dependencies { 
    compile 'com.android.support:appcompat-v7:X.X.X' 
    // where X.X.X version 
} 

II에서 최신 APPCOMPAT 라이브러리를 추가합니다. 활동을 android.support.v7.app.AppCompatActivity으로 확장하고 DatePickerDialog.OnDateSetListener 인터페이스를 구현하십시오.

public class MainActivity extends AppCompatActivity 
    implements DatePickerDialog.OnDateSetListener { 

III. DatePickerDialog 컨텍스트, 리스너의 구현 및 날짜 선택 도구의 시작 연도, 월, 일을 설정하십시오.

DatePickerDialog datePickerDialog = new DatePickerDialog( 
    context, MainActivity.this, startYear, starthMonth, startDay); 

IV. 당신의 버튼

((Button) findViewById(R.id.myButton)) 
    .setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     datePickerDialog.show(); 
    } 
}); 
+0

위대한 사용할 수 있습니다! 첫 번째 2 단계로 끝났습니다. 단계 III에서 수행해야하는 작업 @Saulmm –

+0

필요한 매개 변수를 채우는 스 니펫에 넣은 날짜 선택기 대화 상자의 인스턴스를 가져 와서 단추의 수신기에서 시작합니다. – saulmm

관련 문제