当我尝试初始化这个映射库的mappfragment时,出现了一个异常。在Android 5.0上。android 4.2运行良好。
java.lang.RuntimeException: Cannot initialize the engine twice
at com.nokia.maps.MapsEngine.<init>(MapsEngine.java:585)
at com.nokia.maps.MapsEngine.b(MapsEngine.java:874)
at com.nokia.maps.MapsEngine.b(MapsEngine.java:391)
at com.nokia.maps.MapsEngine.a(MapsEngine.java:343)
at com.here.android.mpa.common.MapEngine.init(MapEngine.java:129)
at com.nokia.maps.br.a(MapFragmentImpl.java:126)
at com.here.android.mpa.mapping.MapFragment.init(MapFragment.java:108)
at com.reverllc.rever.map.MapFragment.setUpMapView(MapFragment.java:366)
at com.reverllc.rever.map.MapFragment.onRideStatusUpdate(MapFragment.java:649)
at com.reverllc.rever.service.TrackingServiceManager.invokeStatusListeners(TrackingServiceManager.java:135)
at com.reverllc.rever.service.TrackingServiceManager.access$600(TrackingServiceManager.java:27)
at com.reverllc.rever.service.TrackingServiceManager$IncomingHandler.handleMessage(TrackingServiceManager.java:276)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5951)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
我的地图碎片位于线性布局中。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
class="com.here.android.mpa.mapping.MapFragment"
android:id="@+id/mapfragment"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/relativeLayout"
android:layout_centerHorizontal="true"/>
........................................
在活动类上,我得到的可能是按id分段的。我只调用init方法一次。尝试初始化映射时发生异常。我设置了断点,我确信init方法只调用一次。我做的都是official article HEREmap里写的
方法oncreate in my activity with mappfragment:
@Override
protected void onCreate(Bundle savedInstanceState) {
setUsingEventBus(true);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
mapFragment = (com.here.android.mpa.mapping.MapFragment)getFragmentManager().findFragmentById(
R.id.mapfragment);
mapFragment.init(new OnEngineInitListener() {
@Override
public void onEngineInitializationCompleted(
OnEngineInitListener.Error error)
{
if (error == OnEngineInitListener.Error.NONE) {
map = mapFragment.getMap();
map.setCenter(new GeoCoordinate(49.196261, -123.004773, 0.0),
com.here.android.mpa.mapping.Map.Animation.NONE);
map.setZoomLevel(
(map.getMaxZoomLevel() + map.getMinZoomLevel()) / 2);
} else {
Log.d("MapFragment","ERROR: Cannot initialize Map Fragment");
}
}
});
有人能帮忙解决这个问题吗?
更新
应用程序日志file
最佳答案
我有些问题!!
我发现了一个相似的原木。
我/编舞:跳过了34帧!应用程序可能在其主线程上做了太多工作。
我的解决方案是在oncreate()中只执行mappfragment.init()。其他事件将移动到onstart()。