2014-02-15 4 views
0

나는 사용자로부터 생년월일을 얻고 자하는 안드로이드 프로젝트를 진행 중이다. 나는 버튼을 클릭 할 때 Datepicker가 대화 상자로 팝업하는 방식으로 Datepicker를 사용하고 있습니다. 이제 선택한 날짜를 다른 java.util.date 객체로 설정하여 데이터베이스에 저장하려고합니다. 나는 setDate(), setMonth 메서드를 사용하여 노력했지만 그것의 deprecated 및 null 포인터 exception.Is 거기에 어떤 다른 효율적인 방법이 문제는? 내 코드를 첨부.android의 사용자 입력에서 날짜를 설정하는 방법은 무엇입니까?

private Date dob; 
int day,month,year; 
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) { 
     year = selectedYear; 
     month = selectedMonth; 
     day = selectedDay; 

     System.out.println("Dob selected="+day+"."+month+"."+year); 
     etDOB.setText(day+"/"+month+"/"+year);//setting selected date as Content of edittext 
               //(This part is working fine) 
     dob.setDate(day);//the following lines throwing null pointer exception 
     dob.setMonth(month); 
     dob.setYear(year); 



    } 
}; 

답변

0

"dob"변수에 Date 인스턴스를 할당 한 적이 없기 때문에 NPE를 얻고 있다고 말할 수 있습니다. 따라서 일/월/년을 설정하려는 시점에서 dob는 여전히 null입니다. 당신의 OnDateSet 콜백의 첫 번째 라인으로

, 그냥 DOB하기 위해 새로운 날짜를 지정 : 더 나은

dob = new Date(); 

또는를 할 수 있습니다 똑바로 DatePicker에서의 전체 선택한 날짜 수 :

dob = new Date(view.getCalendarView().getDate()); 

다음 세 줄은 필요하지 않습니다.

dob.setDate(day);//the following lines throwing null pointer exception 
    dob.setMonth(month); 
    dob.setYear(year); 

날짜를 dat 시간을 밀리 초 단위로 지정하십시오. 따라서 나중에 얻으려면 dob의 getTime()을 호출하십시오.

dob.getTime(); 
+0

감사합니다! 도움이 되었어요 :) – DeepuChandran

+0

@DeepuChandran 도와 줘서 고맙네! 답변을 수락 해 주셔서 감사합니다. – Matej

0

자바 문서는 java.util.Date는 사용되지 않으며 당신이하는 java.util.Calendar을 사용해야 대신 .. http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html

다음 일정으로, 모든 요청을 할 수있을 것이라고 말했습니다 네가 원해.

+0

** java.util.Date의 * 메소드 *가 더 이상 사용되지 않습니다. 그러나 클래스는 확실히 * 더 이상 사용되지 않습니다. –

관련 문제