2011-03-31 51 views
1

親愛的堆棧溢出社區,findViewById空指針異常

我試圖從一個datepicker獲取日期並將其設置爲與位於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 2011-03-31 04:36:26

回答

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

你真的走錯了路。 – 2011-09-29 22:50:15

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

在這種情況下,它可能適合檢查空dp對象,捕獲或拋出NullPointerException在您使用該對象的地方。 但無論如何,我無法理解使用視圖的目的,而不是創建 – Maxim 2011-03-31 05:06:59

+1

是的,當然......他需要這樣做......我不能爲他做所有事情...... – 2011-03-31 05:12:37

+1

..... ....謝謝。無論你的屈尊如何幫助我。 – Jevarlo 2011-03-31 05:26:33

0

你應該registrer的onClick偵聽器的DatePicker。你可以閱讀this 教程。