2013-01-09 44 views
6

Tôi muốn tải API bản đồ google trên Android của mình. Tôi thử tất cả mọi thứ tôi tìm kiếm nhưng nó vẫn sụp đổ. đây là MainActivity.java tôiBản đồ Android API V2 đã bị lỗi

package com.example.androidmapsv2; 

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 

import com.google.android.gms.common.GooglePlayServicesUtil; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.SupportMapFragment; 

public class MainActivity extends FragmentActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     // Show the Up button in the action bar. 
     getActionBar().setDisplayHomeAsUpEnabled(true); 
     GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext()); 

     GoogleMap map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); 

    } 

} 

Đây là cách bố trí của tôi activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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" 
    tools:context=".MainActivity" > 
    <fragment 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.google.android.gms.maps.SupportMapFragment"/> 
</RelativeLayout> 

Đây là tôi manifest

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.androidmapsv2" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="11" 
     android:targetSdkVersion="16" /> 

    <permission 
     android:name="com.example.androidmapsv2.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature" > 
    </permission> 

    <uses-permission android:name="com.example.androidmapsv2.permission.MAPS_RECEIVE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

    <!-- Require OpenGL ES version 2 --> 
    <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="true" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <uses-library android:name="com.google.android.maps" /> 

     <activity 
      android:name="com.example.androidmapsv2.MainActivity" 
      android:label="aaa" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="AIzaSyDr9xN8L3sF6W2ZRWmTR7q0lhTeOWhXEfQ" /> 
    </application> 

</manifest> 

Đây là chìa khóa tôi đã có enter image description here

Đây là thư viện libs inclu ded (Giải Quyết trong bản cập nhật) enter image description here

và tôi không có một thiết bị Android thực, vì vậy tôi cài đặt nó trên giả lập trong này tutorial

Đây là logcat

01-09 18:05:19.184: E/Trace(1366): error opening trace file: No such file or directory (2) 
01-09 18:05:19.354: W/dalvikvm(1366): Unable to resolve superclass of Lcom/example/androidmapsv2/MainActivity; (5) 
01-09 18:05:19.354: W/dalvikvm(1366): Link of class 'Lcom/example/androidmapsv2/MainActivity;' failed 
01-09 18:05:19.365: D/AndroidRuntime(1366): Shutting down VM 
01-09 18:05:19.365: W/dalvikvm(1366): threadid=1: thread exiting with uncaught exception (group=0x40a13300) 
01-09 18:05:19.384: E/AndroidRuntime(1366): FATAL EXCEPTION: main 
01-09 18:05:19.384: E/AndroidRuntime(1366): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.androidmapsv2/com.example.androidmapsv2.MainActivity}: java.lang.ClassNotFoundException: com.example.androidmapsv2.MainActivity 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at android.app.ActivityThread.access$600(ActivityThread.java:130) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at android.os.Handler.dispatchMessage(Handler.java:99) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at android.os.Looper.loop(Looper.java:137) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at java.lang.reflect.Method.invoke(Method.java:511) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at dalvik.system.NativeStart.main(Native Method) 
01-09 18:05:19.384: E/AndroidRuntime(1366): Caused by: java.lang.ClassNotFoundException: com.example.androidmapsv2.MainActivity 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at android.app.Instrumentation.newActivity(Instrumentation.java:1053) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  ... 11 more 

CẬP NHẬT

Tôi đã cố sao chép google-play-services_lib sang không gian làm việc và dấu đỏ biến mất enter image description here nhưng có lỗi khác. Nó thiếu google-play-services_lib.jar (tên thư mục lib + .jar). cách khắc phục nó enter image description here khi tôi nhấp vào google-play-services_lib.jar, nút xóa không hiển thị (như hình ảnh). Tuy nhiên tôi cố gắng loại bỏ tất cả các phụ thuộc Android và nhập lại các lib khác. bây giờ nó hoạt động, nhưng vẫn sụp đổ.

tôi đã cố gắng thay đổi

MainActivity extends Activity 

Để

MainActivity extends FragmentActivity 

và cách bố trí

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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" 
    tools:context=".MainActivity" > 
    <fragment 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.google.android.gms.maps.SupportMapFragment"/> 
</RelativeLayout> 

nó xuất hiện lỗi khác. giúp tôi, bây giờ tôi đã hết giải pháp cho

Cuối cùng, tôi đã giải quyết được lỗi của mình. Nó gây ra bởi nhật thực của tôi (tôi đoán). Khi bạn thêm lớp thư viện, nó sẽ tự động xuất hiện "google-play-services_lib.jar", bạn không phải làm gì cả. Tôi cài đặt lại Eclipse và mọi thứ hoạt động tốt enter image description here

+0

chỉ cần chọn trên 'google-play-services_lib.jar' và xóa thư viện. –

+0

thk bạn giúp tôi, nhưng tôi nghĩ rằng một số loại lỗi về libs đính kèm và nhật thực. Tôi đã thử một ví dụ trực tuyến và nó có lỗi tương tự – Fido

+0

@Rahul Patel Tôi là người mới trong stackoverflow. làm thế nào để làm điều đó? anyway, tôi đã giải quyết vấn đề của tôi bằng cách cài đặt lại nhật thực và sdk của tôi. đó là sự cố khi nhập libs google-play-services_lib.jar – Fido

Trả lời

2

Tôi cũng phải đối mặt với loại sự cố này, khi lần đầu tiên mã hóa bản đồ bằng API V2.

Chỉ cần thử bằng cách sử dụng kéo dài với FragmentActivity thay vì Activity

bạn phải sao chép các dự án (goolge_play_services) vào không gian làm việc của bạn và sau đó gắn nó vào dự án của bạn. Trong hình ảnh trên nó cho thấy chữ thập đỏ, do đó, chọn nó và loại bỏ và sau đó một lần nữa thêm đính kèm thư viện với dự án.

+1

tôi đã thay đổi từ Hoạt động thành FragementActivity nhưng nó vẫn gặp sự cố và xuất hiện lỗi khác – Fido

+0

vui lòng cài đặt 'dịch vụ google play' vào trình quản lý SDK của bạn.if không hiển thị được rồi cập nhật plugin ADT của bạn. –

0

bạn phải sao chép dự án (goolge_play_services) vào không gian làm việc của bạn rồi đính kèm nó vào dự án của bạn.

Việc bạn đang làm là nhập dự án và không đánh dấu sao chép dự án vào không gian làm việc do nó hiển thị cho bạn đánh dấu sai trong các thư viện đã thêm.

Vì vậy, chỉ cần đánh dấu bản sao dự án vào không gian làm việc trong khi nhập dự án google_play_services và sau đó đính kèm nó vào dự án của bạn.

+0

tks, tôi đã nhập nó vào không gian làm việc của mình và nó xuất hiện một lỗi khác. Tôi đã cập nhật lỗi trong bài đăng đầu tiên, làm thế nào tôi có thể sửa chữa nó – Fido

+0

Hãy kiểm tra xem bạn đã thêm tệp jar tương thích vào dự án của mình chưa và mở rộng hoạt động của bạn với FragmentActivity – TNR

+0

tôi thay đổi nhưng nó xuất hiện một lỗi khác, tôi đã cập nhật nó lần đầu tiên bài đăng. bạn có thể giúp tôi – Fido

0

Như ở đây tôi có thể thấy rằng bạn đang sử dụng cấp api 8 và AFAIK "Phân đoạn" được hỗ trợ từ 11.

Vì vậy, tại đây bạn cần phải sử dụng thư viện tương thích của các đoạn.

Và cũng đảm bảo rằng bạn cũng đã nhập thư viện của dịch vụ google-play trong không gian làm việc của bạn và thêm nó vào ứng dụng của bạn.

1

Nó là cần thiết để sử dụng SupportMapFragment nếu API phiên bản ở dưới 11

  • quan trọng

    Đừng quên để mở rộng của bạn Hoạt động với FragmentActivity

0

Bạn cần chỉnh sửa tệp AndroidManifest.xml của ứng dụng và thêm tuyên bố sau trong phần tử. Điều này nhúng phiên bản dịch vụ của Google Play mà ứng dụng đã được biên dịch.

<meta-data 
    android:name="com.google.android.gms.version" 
    android:value="@integer/google_play_services_version" /> 
Các vấn đề liên quan