Pourquoi "Heremap" montre-t-il un écran vide dans Android?
Question
Je suis ce tutoriel Link pour Nokia's Voici l'intégration de la carte. J'ai la sortie comme celle-ci et une erreur
Java.lang.illegalAccessError: Classe Ref dans la classe pré-vérifiée résolue à la mise en œuvre inattendue
mon
manifeste.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.heremap"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="16" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<uses-library android:name="com.here.android" android:required="true" />
<activity
android:name="com.example.heremap.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data android:name="com.here.android.maps.appid"
android:value="XXXXXX"/>
<meta-data android:name="com.here.android.maps.apptoken"
android:value="XXXXXX"/>
</application>
</manifest>
MainActivity.java
package com.example.heremap;
import android.app.Activity;
import android.os.Bundle;
import com.here.android.mapping.FragmentInitListener;
import com.here.android.mapping.InitError;
import com.here.android.mapping.Map;
import com.here.android.mapping.MapAnimation;
import com.here.android.mapping.MapFactory;
import com.here.android.mapping.MapFragment;
public class MainActivity extends Activity {
// map embedded in the map fragment
private Map map = null;
// map fragment embedded in this activity
private MapFragment mapFragment = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Search for the map fragment to finish setup by calling init().
mapFragment = (MapFragment) getFragmentManager().findFragmentById(
R.id.mapfragment);
mapFragment.init(new FragmentInitListener() {
@Override
public void onFragmentInitializationCompleted(InitError error) {
if (error == InitError.NONE) {
// retrieve a reference of the map from the map fragment
map = mapFragment.getMap();
// Set the map center coordinate to the Vancouver region
map.setCenter(MapFactory.createGeoCoordinate(49.196261,
-123.004773, 0.0), MapAnimation.NONE);
// Set the map zoom level to the average between min and max
// (with no animation)
map.setZoomLevel((map.getMaxZoomLevel() +
map.getMinZoomLevel()) / 2);
} else {
System.out.println("ERROR: Cannot initialize Map Fragment");
}
}
});
}
}
Activity_Main.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world"
tools:context=".MainActivity" />
<fragment
class="com.here.android.mapping.MapFragment"
android:id="@+id/mapfragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
Journal d'erreur:
02-26 06:06:47.192: E/AndroidRuntime(808): FATAL EXCEPTION: main 02-26
06:06:47.192: E/AndroidRuntime(808): java.lang.IllegalAccessError:
Class ref in pre-verified class resolved to unexpected implementation
02-26 06:06:47.192: E/AndroidRuntime(808): at
com.example.heremap.MainActivity.onCreate(MainActivity.java:27) 02-26
06:06:47.192: E/AndroidRuntime(808): at
android.app.Activity.performCreate(Activity.java:5180) 02-26
06:06:47.192: E/AndroidRuntime(808): at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
02-26 06:06:47.192: E/AndroidRuntime(808): at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2031)
02-26 06:06:47.192: E/AndroidRuntime(808): at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2092)
02-26 06:06:47.192: E/AndroidRuntime(808): at
android.app.ActivityThread.access$600(ActivityThread.java:133) 02-26
06:06:47.192: E/AndroidRuntime(808): at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1203)
02-26 06:06:47.192: E/AndroidRuntime(808): at
android.os.Handler.dispatchMessage(Handler.java:99) 02-26
06:06:47.192: E/AndroidRuntime(808): at
android.os.Looper.loop(Looper.java:137) 02-26 06:06:47.192:
E/AndroidRuntime(808): at
android.app.ActivityThread.main(ActivityThread.java:4807) 02-26
06:06:47.192: E/AndroidRuntime(808): at
java.lang.reflect.Method.invokeNative(Native Method) 02-26
06:06:47.192: E/AndroidRuntime(808): at
java.lang.reflect.Method.invoke(Method.java:511) 02-26 06:06:47.192:
E/AndroidRuntime(808): at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
02-26 06:06:47.192: E/AndroidRuntime(808): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:559) 02-26
06:06:47.192: E/AndroidRuntime(808): at
dalvik.system.NativeStart.main(Native Method)
Après avoir supprimé le bocal de
02-26 06: 34: 09.810: E / Trace (1266): Erreur lors de l'ouverture du fichier de trace: non telle fichier ou répertoire (2) 02-26 06: 34: 09.859: D / BYD_FLEX (1266): GetValue () NOM= @ NOKIAFLEX @ PACKAGENEEDDATA 02-26 06: 34: 09.859: D / BYD_FLEX (1266): Impossible de trouver la variante de fichier / cfg / flex.xml 02-26 06: 34: 09.870: D / BYD_FLEX (1266): GetValue () ReadflexFromXML= TypedValue {t= 0x0 / d= 0x0} 02-26 06: 34: 09.870: D / BYD_FLEX (1266): GetValue () Nom= @ NokiaFlex @ SetdatausagerMinder 02-26 06: 34: 09.870: D / BYD_FLEX (1266): Impossible de trouver la variante de fichier / cfg / flex.xml 02-26 06: 34: 09.870: D / BYD_FLEX (1266): GetValue () ReadflexFromXML= TypedValue {t= 0x0 / d= 0x0} 02-26 06: 34: 10.249: I / Chorégraphe (1266): Ignoré 44 cadres! La demande peut faire trop de travail sur son fil principal. 02-26 06: 34: 10.249: W / TextureView (1266): une TextureView ou Une sous-classe ne peut être utilisée qu'avec une accélération matérielle activée. 02-26 06: 34: 10.459: Je / chorégraphe (1266): sauté 53 images! le L'application peut faire trop de travail sur son fil principal. 02-26 06: 34: 11.679: Je / chorégraphe (1266): sauté 314 images! le L'application peut faire trop de travail sur son fil principal. 02-26 06: 34: 30.191: Je / chorégraphe (1266): ignoré 38 images! le L'application peut faire trop de travail sur son fil principal. 02-26 06: 34: 32.183: Je / chorégraphe (1266): sauté 34 cadres! le L'application peut faire trop de travail sur son fil principal. 02-26 06: 35: 00.068: Je / chorégraphe (1266): sauté 35 cadres! le L'application peut faire trop de travail sur son fil principal. 02-26 06: 35: 11.672: Je / chorégraphe (1266): sauté 56 cadres! le L'application peut faire trop de travail sur son fil principal.
La solution
Salut amis Atlast Je trouve l'erreur, l'erreur est dans l'émulateur, vous devez créer un émulateur avec cette config
Après cela ajoutez deux bocaux dans
- com.here.android.sdk.jar
- com.google.android.maps.sdk.jar
et obtenir
Autres conseils
Vous obtenez cette erreur en raison de la référence de bibliothèque tierce à deux reprises.Vous avez ajouté le chemin d'application dans le chemin de construction du projet.Donc, la référence de la bibliothèque a été automatiquement ajoutée au projet ". Supprimer toute référence de bibliothèque dans le projet de test sous Propriétés-> Android. Décochez les bocaux de" commande et exportation "onglet sous le chemin de construction Java de Project dans Eclipse.MUT Laissez-les être ajoutés dans" Bibliothèques"Onglet. Cliquez sur OK, nettoyez les projets et construire maintenant. Ça fonctionne.
pour erreur
error opening trace file: No such file or directory (2)
Récréation du périphérique virtuel Android, étant donné de mettre en valeur la taille de la carte SD (j'ai utilisé 200 MIB).
VOTRE minSdkVersion is 8
Mais de Tutoriel officiel Ils ont dit de définir minSdkVersion to 11
voir Point N ° 6 Si vous souhaitez accéder à cette carte dans android-2.3 api level 10
, vous devez utiliser Bibliothèque de support
- Tutoriel officiel: http://developer.nokia.com/resources/library/nokia-x/Here-maps/Quick-Start/Create-A-Simple-Application-Un-Le.html
- Bibliothèque de support: http://developer.android.com/tools/extras/support-library.HTML
En général, vous obtenez la commande noire lorsque l'initialisation de la carte de la carte échoue, vous pouvez donc vérifier la fonction complète d'initialisation et voir si le code d'erreur indiquerait ce qui ne va pas, cela dit souvent la raison exacte.