6

アンドロイドにグーグルマップAPIをロードしたい。検索するすべてを試しますが、それでもクラッシュします。これは私のMainActivity.javaです

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();

    }

}

これは私のレイアウト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>

これは私のマニフェストです

<?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>

これは私が持っている鍵です ここに画像の説明を入力してください

これは含まれているライブラリです(アップデートで解決済み) ここに画像の説明を入力してください

私は実際のAndroidデバイスを持っていないので、このチュートリアルでエミュレーターにインストールします

これは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

更新しました

google-play-services_libをワークスペースにコピーしようとしましたが、赤いマークが消え ここに画像の説明を入力してください ましたが、別のエラーが発生します。google-play-services_lib.jar(libフォルダー名+ .jar)がありません。ここに画像の説明を入力してください google-play-services_lib.jarをクリックしたときに修正する方法 、削除ボタンが表示されません(画像のように)。ただし、すべてのAndroid依存関係を削除し、他のライブラリを再度インポートしてみます。今は動作していますが、それでもクラッシュします。

変更してみました

MainActivity extends Activity

MainActivity extends FragmentActivity

とレイアウト

<?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>

別のエラーが表示されます。私を助けてください、今私はこれの解決策がありません

最後に、エラーを解決しました。それは私の日食によって引き起こされました(私は推測します)。ライブラリクラスを追加すると、自動的に「google-play-services_lib.jar」と表示されます。何もする必要はありません。Eclipseを再インストールすると、すべて正常に動作します ここに画像の説明を入力してください

4

5 に答える 5

2

API V2を使用してマップを初めてコーディングするときにも、この種の問題に直面します。

FragmentActivityの代わりにextendswithを使用してみてくださいActivity

プロジェクト(goolge_play_services)をワークスペースにコピーしてから、プロジェクトにアタッチする必要があります。上の画像では、十字の赤が表示されているので、それを選択して削除し、もう一度追加して、ライブラリをプロジェクトにアタッチします。

于 2013-01-09T08:53:56.710 に答える
1

バージョンが11未満のSupportMapFragment場合に使用する必要がありますAPI

<fragment
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.SupportMapFragment"/>
  • 重要

    FragmentActivityでアクティビティを拡張することを忘れないでください

于 2013-01-09T09:56:09.627 に答える
0

プロジェクト(goolge_play_services)をワークスペースにコピーしてから、プロジェクトにアタッチする必要があります。

プロジェクトをインポートし、チェックマークを付けずにプロジェクトをワークスペースにコピーします。これにより、追加されたライブラリに間違ったマークが表示されます。

したがって、google_play_servicesプロジェクトをインポートするときに、プロジェクトをワークスペースにコピーすることにチェックマークを付けてから、プロジェクトにアタッチします。

于 2013-01-09T08:16:06.330 に答える
0

ここにあるように、APIレベル8を使用していて、AFAIKの「フラグメント」は11からサポートされていることがわかります。

したがって、ここでは、フラグメントの互換性のあるライブラリを使用する必要があります。

また、ワークスペースにgoogle-play-serviceのライブラリをインポートし、アプリケーションに追加したことも確認してください。

于 2013-01-09T08:41:36.120 に答える
0

アプリケーションのAndroidManifest.xmlファイルを編集し、要素内に次の宣言を追加する必要があります。これにより、アプリがコンパイルされたバージョンのGooglePlayサービスが埋め込まれます。

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />
于 2015-03-24T05:46:48.167 に答える