Как создать диалог ввода или выбора даты в представлении карты? - PullRequest
2 голосов
/ 18 июля 2011

Я создал мероприятие, которое отображает карту Google на экране и состоит из 3 меню опций для взаимодействия с выбором пользователя.

Когда пользователь нажимает в подменю, я хочу показать всплывающее диалоговое окно ввода, в котором пользователь может ввести дату (дд / мм / гггг) или всплывающее окно выбора даты. Я буду использовать эту дату для запроса местоположения, которое сохранилось на эту дату, а затем на карте.

Моя проблема в том, что когда я пытался создать диалоговое окно ввода или что-то внутри моего подменю, на экране ничего не показывалось, кроме отображения карты. Я думаю, что это может сделать что-то особенное, как это. Итак, я искал много дней, но до сих пор не получил ответ.

У кого-нибудь есть идея или это? Пожалуйста, предложите мне. Это мой первый раз с Google Map. Цени каждый ответ.

1 Ответ

1 голос
/ 18 июля 2011

Ваша проблема не связана с MapActivity .У меня есть приложение, у которого есть эта функция (подкласс MapActivity, который показывает средство выбора даты ), и у меня не было никаких проблем.Я подозреваю, что проблема заключается в том, как вы показываете свой сборщик дат.Возможно, попробуйте выполнить это в виде простого действия (то есть того, которое не является производным от MapActivity), чтобы подтвердить это.

Итак, в вашем классе, расширяющем MapActivity, вам понадобится что-то вроде:

// the id for your dialog
static final int DATE_DIALOG_ID = 0;
// the date from the picker
Date mDate; 

// so you are defining a member variable mDateSetListener which implements
// onDateSet. This gets called when the user selects a date.
private DatePickerDialog.OnDateSetListener mDateSetListener =
    new DatePickerDialog.OnDateSetListener() {
        public void onDateSet(DatePicker view, int year,
                              int monthOfYear, int dayOfMonth) {

            Calendar cal = GregorianCalendar.getInstance();
            cal.set (year, monthOfYear, dayOfMonth);

            // store the date that was picked
            mDate = cal.getTime();

            // update your map
            // ...
        }
};

@Override
protected android.app.Dialog onCreateDialog(int id) {
   switch (id) {

    case DATE_DIALOG_ID:

        final Calendar c = Calendar.getInstance();

        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);

        return new DatePickerDialog(this,
                mDateSetListener,
                year, month, day);
   }
   return null;
}

@Override public boolean onMenuItemSelected(int featureId, MenuItem item)
{
    switch(item.getItemId())
    {
        // handle your date selection menu item
        case R.id.date:
            showDialog(DATE_DIALOG_ID);
            break;
    }
}
...