Дорогое сообщество,
Я пытаюсь получить дату с 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?
Если я буду кричать по шоссе неправильности, пожалуйста, дайте мне знать и направьте меня к правильному способу сделать это.
Спасибо всем за ваши ответы! Вопрос был решен с моей стороны. Цель состояла в том, чтобы получить значение выбора даты и использовать это значение в инструкции 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;
}
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() ;
}
}
Вам необходимо зарегистрироваться в onClick-слушателе для DatePicker. Вы можете читать это учебник.