亲爱的Stack Overflow社区,
我正在尝试从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 :(得分:3)
DatePicker dp =(DatePicker)findViewById(R.id.datePickerControl);
在你的班级中声明日期选择器...... 在create方法内部初始化它。 在任何你喜欢的地方使用它。
示例代码:
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() ;
}
}
答案 1 :(得分: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;
}
答案 2 :(得分:0)
您应该为DatePicker注册onClick侦听器。你可以阅读this 教程。