لماذا يظهر "HereMap" شاشة فارغة في Android؟
سؤال
أنا أتبع هذا البرنامج التعليمي وصلة لتكامل خريطة Here من Nokia.حصلت على الإخراج مثل هذا والخطأ
java.lang.IllegalAccessError:Class Class in Class Class مصور مسبقًا على تنفيذ غير متوقع
لي
البيان.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>
سجل الأخطاء:
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)
بعد إزالة الجرة من النظام والتصدير المجلد يحصل على خطأ جديد ونتيجة السجل المحدثة
02-26 06:34:09.810:ه/تتبع(1266):خطأ في فتح ملف التتبع:لا يوجد مثل هذا الملف أو الدليل (2) 02-26 06: 34: 09.859:د/BYD_Flex(1266):getValue () name = @nokiaflex @packageneedData 02-26 06: 34: 09.859:د/BYD_Flex(1266):لا يمكن العثور على متغير الملف/cfg/flex.xml 02-26 06: 34: 09.870:د/BYD_Flex(1266):getValue () readflexfromxml = typedValue {t = 0x0/d = 0x0} 02-26 06: 34: 09.870:د/BYD_Flex(1266):اسم getValue() = @NOKIAFLEX@setDataUsageReminder 02-26 06:34:09.870:د/BYD_Flex(1266):لا يمكن العثور على متغير الملف/cfg/flex.xml 02-26 06: 34: 09.870:د/BYD_Flex(1266):getValue () readflexfromxml = typedValue {t = 0x0/d = 0x0} 02-26 06: 34: 10.249:أنا/مصمم الرقصات (1266):تخطي 44 لقطة!قد يقوم التطبيق بعمل الكثير من العمل على موضوعه الرئيسي.02-26 06:34:10.249:ث/TextureView(1266):لا يمكن استخدام AmstureView أو فئة فرعية إلا مع تمكين تسريع الأجهزة.02-26 06: 34: 10.459:أنا/مصمم الرقصات (1266):تخطي 53 لقطة!قد يقوم التطبيق بعمل الكثير من العمل على موضوعه الرئيسي.02-26 06: 34: 11.679:أنا/مصمم الرقصات (1266):تخطي 314 لقطة!قد يقوم التطبيق بعمل الكثير من العمل على موضوعه الرئيسي.02-26 06: 34: 30.191:أنا/مصمم الرقصات (1266):تخطي 38 لقطة!قد يقوم التطبيق بعمل الكثير من العمل على موضوعه الرئيسي.02-26 06: 34: 32.183:أنا/مصمم الرقصات (1266):تخطي 34 لقطة!قد يقوم التطبيق بعمل الكثير من العمل على موضوعه الرئيسي.02-26 06: 35: 00.068:أنا/مصمم الرقصات (1266):تخطي 35 لقطة!قد يقوم التطبيق بعمل الكثير من العمل على موضوعه الرئيسي.02-26 06: 35: 11.672:أنا/مصمم الرقصات (1266):تخطي 56 لقطة!قد يقوم التطبيق بعمل الكثير من العمل على موضوعه الرئيسي.
المحلول
hi friends atlast، أجد الخطأ، فإن Errorror موجود في المحاكي، يجب عليك إنشاء محاكي مع هذا التكوين
بعد ذلك إضافة جرة اثنين في المكتبات
- com.here.here.android.sdk.jar
- com.google.android.maps.sdk.jar
واحصل على الإخراج مثل هذا
نصائح أخرى
أنت تحصل على هذا الخطأ بسبب مرجع مكتبة الطرف الثالث المضافة مرتين.لقد أضفت مسار التطبيق في مسار بناء المشروع.لذلك تمت إضافة مرجع المكتبة تلقائيا إلى المشروع ". قم بإزالة أي مرجع مكتبة في مشروع الاختبار ضمن خصائص -> Android. قم بإلغاء تحديد الجرار من علامة التبويب" ترتيب وتصدير "بموجب مسار بناء Java للمشروع في Eclipse.But، دعهم يضافونهم في" المكتبات"علامة التبويب. انقر فوق موافق، مشاريع نظيفة وبناء الآن. إنه يعمل.
للخطأ
giveacodicetagpre.أعد إنشاء جهاز Android Virtual Virtual، من المؤكد أن تضع قيمة حجم بطاقة SD (استخدمت 200 MIB).
لك minSdkVersion is 8
لكن من البرنامج التعليمي الرسمي قالوا لتعيين minSdkVersion to 11
يرى النقطة رقم 6 إذا كنت تريد الوصول إلى تلك الخريطة في android-2.3 api level 10
ثم عليك أن تستخدم مكتبة الدعم
بشكل عام، يمكنك التحكم باللون الأسود عند فشل تهيئة التحكم في الخريطة، حتى تتمكن من التحقق من وظيفة التهيئة كاملة، ومعرفة ما إذا كان رمز الخطأ سيشير إلى الخطأ، في كثير من الأحيان لا يخبر السبب بالضبط.