2014-12-02 71 views
8

使用地图我有一个活动,当没有连接可用并且使用离线地图(MapQuest)时启动。活动运行正常,地图显示以及所有叠加层,标记等。当用户点击其中一个标记信息窗口时,会启动另一个活动,此时,我在日志中收到一堆红色的错误消息,尽管应用程序不会崩溃。这些消息(标题中的init)似乎在谈论ZoomButtons和触摸事件。至于代码ZoomButtons或触摸事件(多点触控),只有2线:

map.setBuiltInZoomControls(true); 
map.setMultiTouchControls(true); 

,而不是任何对话......

  • 如果我写:

    map.setBuiltInZoomControls(假); map.setMultiTouchControls(false);

红色的错误信息消失,但当然用户无法或缩小以任何方式放大...

当误差(与“真”参数)启动另一个活动我认为,当只发生我要补充的东西在暂停(),即:

onPause(){ 
map.setBuiltInZoomControls(false); 
map.setMultiTouchControls(false); 
super.OnPause(); 
} 

----但这样做不会改变任何东西...... 任何暗示??? - 提前致谢!

+2

找到了我自己回答(不是解决方案): 当我点击标记并打开infoWindow osmdroid zoomButtons出现时(他们必须有一些听众在地图上点击我猜);如果我点击infoWindow(为了启动2°活动),而他们总是存在错误发生;我等到他们消失为止:没有错误。 所以我可能会看到osmdroid源看到它可以改变zoomButtons出现/消失的行为,这种方式并不真正有用。 – 2014-12-17 08:56:08

+0

感谢你和诺丽,我可以用这个来处理!谢谢! – Jenix 2016-03-16 19:26:27

+0

记录在osmdroid问题跟踪器在这里:https://github.com/osmdroid/osmdroid/issues/328 – spy 2016-07-05 01:43:09

回答

15

添加到您的活动:

@Override 
public void finish() { 
    ViewGroup view = (ViewGroup) getWindow().getDecorView(); 
    view.removeAllViews(); 
    super.finish(); 
} 
+0

这是非常有用的。 – srain 2015-06-17 13:30:49

8

我有完全相同的问题...感谢您指出这是由引起的(可能)时,缩放控件仍然可见。我测试了它,这是正确的。当我按下显示缩放控件的后退按钮时,它会显示泄漏错误,如果我等待控件消失(它停止滚动后执行),则不会发生泄漏错误。

WebSettings中的一点研究提供了一种不显示缩放控件的方法,这意味着它在任何时候都不会泄漏,只要按下后退按钮即可。尽管如此,它仍然会缩小捏合效果。使用此方法的唯一缺点是您的控件无法显示。但对我来说,这是值得的,因为大多数用户知道所有应用程序的缩放缩放。

下面是我用什么:

// make sure your pinch zoom is enabled 
webView.getSettings().setBuiltInZoomControls(true); 

// don't show the zoom controls 
webView.getSettings().setDisplayZoomControls(false); 
+1

非常感谢你!!!!!!!!!!谢谢你,谢谢 – Jenix 2016-03-16 19:25:27

+1

奇妙的为我工作。谢谢@Noni A. – 2016-06-19 06:18:17

+0

它是一个解决方案,以消除泄漏按钮?他们通常被留在那里,因为他们被开发者认为是有用的...... – 2017-01-04 10:09:18

1

与此泄漏窗口的问题不会出现在的Android 3.0以下版本,所以,你可以尝试做:

// enabled zoom support 
    getSettings().setSupportZoom(true); 
    getSettings().setBuiltInZoomControls(true); 

    // but,We should hide this button, otherwise in the version 
    // of Android 3 and above, there is a window leak. 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
     // call requies API Level 11 (Android 3.0 +) 
     getSettings().setDisplayZoomControls(false); 
    } 
相关问题