1

こんにちは、サポート マップ フラグメントを使用して Google マップ フラグメントを表示しようとしていますが、これまでのところ、android-support-v4 jar と google-play-service_lib jar の両方を持つプロジェクトに満足していません。

これが私のレイアウトです

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

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

</RelativeLayout>

マイ マップ アクティビティ

package com.jr.haliotest;

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

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.jr.haliotest.utils.IntentFilters;
import com.jr.haliotest.utils.Position;

/**
 * @author RichardsJ
 * 
 */
public class MapActivity extends FragmentActivity  implements IntentFilters {

    private GoogleMap googleMap;

    private Position mPosition;

    private CameraPosition mCameraPosition;

    /*
     * (non-Javadoc)
     * 
     * @see android.app.Activity#onCreate(android.os.Bundle)
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.map_view_layout); //fails here
        mPosition = getIntent().getParcelableExtra(INTENT_EXTRA_POSITION);
        mCameraPosition = new CameraPosition(new LatLng(
                mPosition.getLattitude(), mPosition.getLongetude()), 0, 0, 0);
        initialiseView();
    }

    private void initialiseView() {

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

        if (googleMap == null) {
            Log.d("", "Map wasnt loaded properly");
        } else {
            Log.d("", "Map loaded fine");
            googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        }

        googleMap.moveCamera(CameraUpdateFactory
                .newCameraPosition(mCameraPosition));

    }
}

完全なスタック トレース

  03-29 00:20:17.501: E/AndroidRuntime(2211): FATAL EXCEPTION: main
03-29 00:20:17.501: E/AndroidRuntime(2211): java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
03-29 00:20:17.501: E/AndroidRuntime(2211):     at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:279)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:365)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at android.app.Activity.setContentView(Activity.java:1912)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at com.jr.haliotest.MapActivity.onCreate(MapActivity.java:36)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at android.app.Activity.performCreate(Activity.java:5066)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1101)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at android.app.ActivityThread.access$600(ActivityThread.java:151)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1331)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at android.os.Looper.loop(Looper.java:155)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at android.app.ActivityThread.main(ActivityThread.java:5485)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at java.lang.reflect.Method.invokeNative(Native Method)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at java.lang.reflect.Method.invoke(Method.java:511)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795)
03-29 00:20:17.501: E/AndroidRuntime(2211):     at dalvik.system.NativeStart.main(Native Method)

サポートされているオブジェクトの代わりに MapFragment オブジェクトを使用すると、正常に動作します。

何か案は?私は何が欠けていますか?クリーニング、日食の終了、アプリの再インストールを試みましたが、喜びはありませんでした

4

2 に答える 2

5

私はそれを機能させることができました。

サポートされているライブラリを Google マップ v2 で使用する具体的な手順を次に示します。

  1. Google Play サービス lib を lib フォルダーにコピーします。
  2. libフォルダーにAndroidがサポートするv4 libをコピーします
  3. ビルド パスに 1 と 2 を追加します。
  4. Google Play サービス プロジェクトをワークスペースにインポートする
  5. プロジェクトを選択し、右クリック>プロパティ> Android>プロジェクトライブラリ(Google Playサービス)を追加し、「ライブラリです」にチェックマークを付けないでください
  6. Google Play サービス プロジェクトを選択し、右クリックして [プロパティ] > [android] > [is lib] にチェックを入れます。
  7. サポートされているライブラリを使用するには、FragmentActivity を使用し、Support を使用します。
  8. クリーンと再構築を行い、Eclipse を終了し、以前にデバイスでアプリをアンインストールし、Eclipse をロードして、別のクリーンと再構築を行います。これですべて動作するはずです
于 2013-03-29T11:41:14.783 に答える
0

You need to get the Google Play SDK:

http://developer.android.com/google/play-services/index.html

Basically, you may have the code in your extras directory, so you import it into your workspace, then compile it, add it to your project as a library and you should be set.

于 2013-03-29T00:33:31.123 に答える