2011-03-31 6 views
1

친애하는 스택 오버플로 커뮤니티,findViewById를 Null 포인터 예외

은 내가 날짜 선택기에서 날짜를 얻고에서 onCreate 방법 밖에있는 코드를 문자열로 설정하려고 시도하고있다. 이 코드를 사용하려고 할 때 오류없이 준수, 그러나

DatePicker dp =(DatePicker)findViewById(R.id.datePickerControl); 
String date_picker_message= (dp.getMonth()+1) +"/"+dp.getDayOfMonth()+"/"+dp.getYear() ; 

하지만이 메시지와 충돌 : 여기 내 코드입니다

03-30 22 : 51 : 20.719 : ERROR/AndroidRuntime (4954) : 원인 : java.lang.NullPointerException

콘텐츠보기를 설정하지 않았기 때문에 내 코드가 아직 존재하지 않는보기를 찾으려고 할 수 있다고 생각합니다. 하지만 어떻게하면 onCreate 메서드 밖에서이 작업을 수행 할 수 있습니까?

내가 잘못한 고속도로를 비명을 지르는 중이라면 알려주고 올바른 방법으로 안내해주세요. 클래스 내부

+0

포스트 레이아웃 파일과 전체 onCreate() 메소드. – Karan

답변

2

답장을 보내 주셔서 감사합니다. 이 문제는 내 부분에서 해결되었습니다. 목표는 날짜 선택 도구의 값을 가져 와서 SQL WHERE 문에서이 값을 사용하는 것이 었습니다. 나는이 변수를 사용하는 방법이 다른 곳에서 전적으로 위치하는 동안 코드에서 우연히 배치 된 변수를 철저히 싫어합니다. 논리적으로 변수와 그 변수를 사용하는 방법을 그룹화하는 것은 나에게 의미가 있습니다.

아래 코드는 문제를 해결 한 방법입니다.

public void onClick(View v) { 
    switch (v.getId()) { 
    case R.id.show_events: 
     try { 
      DatePicker dp=(DatePicker)findViewById(R.id.datePickerControl); 

      if ((dp.getMonth()+1) < 10) { 

       String date_picker_value = "0"+(dp.getMonth()+1) +"/"+dp.getDayOfMonth()+"/"+dp.getYear(); 
       Cursor cursor = getEvents(date_picker_value); 
       showEvents(cursor); 
       Toast.makeText(view.this, date_picker_value, Toast.LENGTH_SHORT).show(); 
      } 
      else { 

       String date_picker_value = (dp.getMonth()+1) +"/"+dp.getDayOfMonth()+"/"+dp.getYear(); 
       String date_picker_value="Showing events for: " + date_picker_value; 
       Cursor cursor = getEvents(date_picker_value); 
       showEvents(cursor); 
       Toast.makeText(view.this, date_picker_value, Toast.LENGTH_SHORT).show(); 
      } 


     } 
     finally { 
      events.close(); 
     } 
     break; 
    } 
+0

정말 잘못 들어 봤어요. –

3
DatePicker dp =(DatePicker)findViewById(R.id.datePickerControl); 

선언 날짜 선택은 ... 는 내부의 방법을 만들 초기화합니다. 원하는 곳 어디에서나 사용할 수 있습니다.

샘플 코드 :

public class youractivity extends Activity { 
DatePicker dp; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    dp =(DatePicker)findViewById(R.id.datePickerControl); 
} 
private return_type yourmethod(Arguments) 
{ 
String date_picker_message= (dp.getMonth()+1) +"/"+dp.getDayOfMonth()+"/"+dp.getYear() ; 
} 
} 
+0

이 경우에는 null dp 객체를 확인하거나, 객체를 사용하는 곳에서 NullPointerException을 잡거나 던질 수 있습니다. 하지만 어쨌든 나는 창조되지 않은보기를 사용하는 목적을 이해할 수 없다. – Maxim

+1

물론 ... 그는 그것을해야한다. 나는 그를 위해 모든 것을 할 수 없다 ... –

+1

..... ....감사. 당신의 양육은 상관없이 나를 도왔습니다. – Jevarlo

0

당신은 DatePicker에서 위해 온 클릭 리스너를 registrer한다. 튜토리얼 this 을 읽을 수 있습니다.

관련 문제