如何在地图视图上创建输入对话框或日期选择器?

时间:2011-07-18 03:53:39

标签: android google-maps dialog datepicker android-mapview

我创建了一个活动,它在屏幕上显示谷歌地图,并包含3个选项菜单,用于与用户选择进行交互。

当用户按下子菜单时,我想显示弹出输入对话框,用户可以输入日期(dd / mm / yyyy)或弹出日期选择器。我将使用该日期来查询在该日期保留的位置,然后在地图上标记。

我的问题是当我尝试创建输入对话框或子菜单中的任何内容时,除了地图视图外,屏幕上都没有显示。我认为这可能有一些特别的事情要做。所以,我搜索了很多天,但仍然没有得到答案。

有人有想法或做过这个吗? 拜托,建议我。这是我第一次使用谷歌地图。感谢每一个答案。

1 个答案:

答案 0 :(得分:1)

您的问题并非专门针对MapActivity。我有一个具有此功能的应用程序(一个显示date picker的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;
    }
}