android - super(onTap (GeoPoint, Mapview)) 总是返回 false

标签 android dictionary

因此,我想在用户单击覆盖项时记录一条消息,并在用户单击屏幕上的其他任何地方时记录一个对话框。我在网上看到最好的方法是调用 super(onTap (GeoPoint, Mapview))。如果它返回 true 我会记录,否则显示对话框。但是我检查了 super 调用的输出,无论用户点击哪里,它似乎都返回 false。谁能解释原因或可能的解决方案?

最佳答案

您还必须在叠加层本身中处理 onTap(并在那里返回 true)。我认为任何叠加层都不会自行处理 onTap - 您必须从基类派生并覆盖叠加层本身的 onTap() 方法。他们中的一些人会进行一些计算以查看您点击的位置,但他们不会处理它。

例如,如果您从 ItemizedOverlay 派生,您将获得一个您应该在子类中覆盖的附加方法:

@Override
protected boolean onTap(final int index) {
   Log.d(...);
   return true;
}

ItemizedOverlay 已经计算出您点击的位置,如果您在其中一个项目内部点击,则会调用新的 onTap(int) 方法并使用所点击项目的索引。如果您从此方法返回 true,则 onTap(GeoPoint, MapView) 将在调用 super() 时变为 true。

@Override
protected boolean onTap(GeoPoint p, MapView m) {
   if (!super.onTap(p,m)) {
      // show dialog here ....
   }
}

关于android - super(onTap (GeoPoint, Mapview)) 总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6477617/

相关文章:

python - 字典的平方值

c# - 有没有办法将 C# 泛型字典拆分成多个字典?

C++ map : manipulate map inside map

android aapt 错误 :no layout_constraintLeft_toLeftOf

android - 如何在Android应用程序进入后台时隐藏屏幕信息

安卓.content.res.Resources$NotFoundException : String resource ID #0x12 - onLocationChanged()

python - 将字典值映射到列表

c++ - 尝试制作 STL map 容器的包装器时出错

android - fs-extra:源和目标不能相同。 ( Cordova )

android - 为什么我的字体大小在 android webview 对象中看起来比在 android 浏览器中查看时大得多?