Warum zeigt „HereMap“ in Android einen leeren Bildschirm an?
Frage
Ich folge diesem Tutorial Verknüpfung für Nokias Here Map-Integration.Ich habe die Ausgabe so erhalten und einen Fehler
java.lang.IllegalAccessError:Klasse Ref in der vorverifizierten Klasse, die auf unerwartete Implementierung aufgelöst wurde
Mein
Manifest.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");
}
}
});
}
}
Aktivität_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>
Fehlerprotokoll:
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)
Danach das Glas herausnehmen bestellen und exportieren Ordner erhält neuen Fehler und aktualisiertes Protokollergebnis
02-26 06:34:09.810:E/Trace(1266):Fehler beim Öffnen der Trace-Datei:Keine solche Datei oder Verzeichnis (2) 02-26 06: 34: 09.859:D/BYD_Flex(1266):getValue () name = @nokiaflex @packageneeddata 02-26 06: 34: 09.859:D/BYD_Flex(1266):Ich konnte keine Dateivariante/CFG/flex.xml 02-26 06: 34: 09.870 finden:D/BYD_Flex(1266):getValue () readflexfromxml = typedValue {t = 0x0/d = 0x0} 02-26 06: 34: 09.870:D/BYD_Flex(1266):getValue() name = @NOKIAFLEX@setDataUsageReminder 26.02. 06:34:09.870:D/BYD_Flex(1266):Ich konnte keine Dateivariante/CFG/flex.xml 02-26 06: 34: 09.870 finden:D/BYD_Flex(1266):getValue () readflexfromxml = typedValue {t = 0x0/d = 0x0} 02-26 06: 34: 10.249:Ich/Choreograf(1266):44 Frames übersprungen!Die Anwendung kann zu viel Arbeit an ihrem Hauptfaden erledigen.02-26 06:34:10.249:W/TextureView(1266):Eine TextureView oder eine Unterklasse kann nur mit aktivierter Hardware -Beschleunigung verwendet werden.02-26 06: 34: 10.459:Ich/Choreograf(1266):53 Frames übersprungen!Die Anwendung kann zu viel Arbeit an ihrem Hauptfaden erledigen.02-26 06: 34: 11.679:Ich/Choreograf(1266):314 Frames übersprungen!Die Anwendung kann zu viel Arbeit an ihrem Hauptfaden erledigen.02-26 06: 34: 30.191:Ich/Choreograf(1266):38 Frames übersprungen!Die Anwendung kann zu viel Arbeit an ihrem Hauptfaden erledigen.02-26 06: 34: 32.183:Ich/Choreograf(1266):34 Frames übersprungen!Die Anwendung kann zu viel Arbeit an ihrem Hauptfaden erledigen.02-26 06: 35: 00.068:Ich/Choreograf(1266):35 Frames übersprungen!Die Anwendung kann zu viel Arbeit an ihrem Hauptfaden erledigen.02-26 06: 35: 11.672:Ich/Choreograf(1266):56 Frames übersprungen!Die Anwendung kann zu viel Arbeit an ihrem Hauptfaden erledigen.
Lösung
hi friends atlast Ich finde den Fehler, der Fehler befindet sich im Emulator, Sie müssen Emulator mit dieser Config
danach zwei Glas in
- com.hare.android.sdk.jar
- com.google.android.maps.sdk.jar
und bekommen
Andere Tipps
Sie erhalten diesen Fehler, da die Bibliotheksreferenz von Drittanbieter zweimal hinzugefügt wurde.Sie haben den Anwendungsweg im Projektpfad hinzugefügt.Die Bibliotheksreferenz wird also automatisch zum Projekt hinzugefügt ". Entfernen Sie jede Bibliotheksreferenz im Testprojekt unter Eigenschaften-> Android. Deaktivieren Sie die JARS-Registerkarte" Bestellen und exportieren "unter dem Java-Build-Pfad des Projekts in Eclipse.But lassen Sie sie in" Bibliotheken hinzugefügt werden"Tab. Klicken Sie auf OK, saubere Projekte und bauen Sie jetzt. Es funktioniert.
für Fehler
generasacodicetagpre.Erstellen des virtuellen Android-Virtual-Geräts, der sicher war, dass er einen Wert für die SD-Kartengröße (ich 200 MIB verwendet habe) einfügen.
Dein minSdkVersion is 8
aber von Offizielles Tutorial Sie sagten, ich solle mich setzen minSdkVersion to 11
sehen PUNKT NR. 6 wenn Sie auf diese Karte zugreifen möchten android-2.3 api level 10
dann musst du verwenden Unterstützen Sie die Bibliothek
- Offizielles Tutorial:http://developer.nokia.com/resources/library/nokia-x/here-maps/quick-start/creating-a-simple-application-using-the.html
- Unterstützungsbibliothek:http://developer.android.com/tools/extras/support-library.html
Im Allgemeinen erhalten Sie die Black-Control, wenn die Initialisierung der Kartensteuerung fehlschlägt, sodass Sie die vollständige Funktionsfunktion initialisierung überprüfen können, und sehen Sie, ob der Fehlercode angeben würde, was schief geht, häufig ergibt es den genauen Grund.