2016-11-12 12 views
3

當我嘗試初始化HERE地圖庫的MapFragment時,發生異常。在Android 5.0上。 Android 4.2正常工作。HERE地圖異常「無法將引擎初始化兩次」。 Android 5.0.1

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中。

<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"/> 

    ........................................ 

On活動類我得到可能會按ID分段。我只調用init方法一次。在嘗試初始化映射時發生異常。我把斷點,我確信init方法只調用一次。我這樣做,是寫在official article HEREmap

方法的onCreate在我的活動與mapFragment所有:

@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"); 
      } 
     } 
    }); 

任何人都可以幫助解決這個問題?

UPDATE

應用logcat的file

+0

的代碼看起來不錯,我覺得有可能是另一個錯誤隱藏在adb logcat中。你可以嘗試收集一些日誌併發布在這裏?最可能的原因是如果本地庫未包含在您的應用程序中。 –

+0

@David Leong,我添加了應用程序logcat文件。我想提醒一下,在Android 4.2上,它工作正常 –

+0

抱歉,仍然沒有足夠的信息。您可以嘗試使用MapsEngine.init(),而不是調用MapFragment.init()?簽名應該是相同的。 MapEngine.init()的使用是否返回ErrorNone? –

回答

0

我有一些問題! 我發現了一個類似的日誌。 I /編舞:跳過34幀!應用程序可能在其主線程上做了太多工作。 我的解決方案是隻做onCreate()中的mapFragment.init()。其他事件移動到onStart()。

+0

這通常是正常的,只是意味着設備操作系統有點慢。 –

0

在棉花糖,你需要添加4許可,並在地圖上會工作的罰款

ACCESS_NETWORK_STATE); 
int FourthPermission = ContextCompat.checkSelfPermission(getApplicationContext(), ACCESS_WIFI_STATE); 
int SecondPermissionResult = ContextCompat.checkSelfPermission(getApplicationContext(), ACCESS_FINE_LOCATION); 
int ThirdPermissionResult = ContextCompat.checkSelfPermission(getApplicationContext(), WRITE_EXTERNAL_STORAGE); 

使用此鏈接多個許可

Request Check Multiple Run time Permissions at once in android Marshmallow

相關問題