Эта маленькая штука начала меня сильно расстраивать.Я думал, что это было что-то простое, но я не совсем ясно понял, как работает Android.
В любом случае, проблема в том, что в моем приложении для Android есть несколько кнопок, которые открывают диалог выбора даты или времени.коробка при нажатии.Я знаю, как реализовать их непосредственно в том же классе, что и основной вид деятельности, но я не думаю, что это хорошее решение по причинам обслуживания, а также, если я собираюсь разрабатывать это приложение в будущем.
Я пытался сделать это несколькими различными способами и терпел неудачу каждый раз, когда пытался это сделать.Это оставило меня в неведении о том, что делать и в чем проблема.
Вот один из способов, которым я пытался это сделать:
основное действие (я упростил его и попытался предоставить только необходимый кодпотому что это долго).Это следующий шаблон проектирования синглтона.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
dateButton = (Button) findViewById(R.id.editDateButton);
dateButton.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if(view.getId() == R.id.editStartDateButton) {
DatePickers.getInstance().setDate(dateButton);
}
}
Класс средств выбора даты (расширяет Activity; также упрощенный код и все ненужные вещи удалены):
private static DatePickers self = null;
public static DatePickers getInstance() {
if (null == self) {
self = new DatePickers();
}
return self;
}
public void setDate(Button button) {
theButtonUsed = button;
showDialog(DATE_DIALOG_ID);
}
После вызова showDialog вызовитекласс похож на пример Hello-DatePicker на сайте разработчика Android.
Также я попытался сделать это в значительной степени, как в здесь , но с той разницей, что когданажатие на кнопку dateButton запускает новое действие, это диалог выбора даты.В этом случае класс datePicker выглядел следующим образом:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.datePicker);
showDialog(DATE_DIALOG_ID);
}
И все остальное, как в примере Hello-DatePicker на сайте разработчика Android.Оба эти решения приводят к проблеме, когда мое приложение зависло и было вынуждено завершить работу.
Я надеюсь, вы понимаете, в чем проблема, и что вы можете указать мне и показать, что я делаю неправильно.Я попытался сделать это коротким и предоставить только необходимую информацию.
Спасибо -Z
Редактировать:
Как я уже упоминал в одном из комментариев, настоящая проблема сэто было то, что я просто забыл добавить новое действие в файл манифеста.Могли быть и другие проблемы, которые были решены с помощью принятого ответа.Я надеюсь, что это все еще полезно для тех, кто сталкивается с подобными проблемами.