0

助けてください。他のすべてのソリューションを試して実装しましたが、アプリに Google マップを統合することはできません。

現在の問題は、フラグメントの膨張点にあります

05-21 00:17:24.629  26619-26619/com.wimedias12.orderr          E/AndroidRuntime: FATAL EXCEPTION: main
    java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
    at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
    at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source)
    at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:279)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
    at com.wimedias12.orderr.RestaurantFragments.RestaurantHomeFragment.onCreateView(RestaurantHomeFragment.java:66)

答えとして最初に出てくるのは、Googleサービスライブラリを正しい方法で参照することですが、それはセットアップされています.

これが私の現在の構成です。できれば助けてください。

restaurant_home.xml - マップを表示するフラグメント レイアウト

... Other fragment layout XML code ...

<LinearLayout
android:layout_width="match_parent"
android:layout_height="200dp"
android:id="@+id/mapMap"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp">
<fragment
        android:id="@+id/mapMapppp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment" />

</LinearLayout>

... Rest of the fragment layout XML ... 

MapView を試してみましたが、うまくいきませんでした。フラグメントを使用する方が簡単だと読みました。

RestaurantHomeFragment.java - フラグメントのコード

public class RestaurantHomeFragment extends SherlockFragment {
 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.restaurant_home, container, false); //<-- This line breakes
 ....
}

このフラグメントは、SherlockFragmentActivity でホストされます。

AndroidManifest.xml

<uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="14" />

    <permission android:name="com.wimedias12.orderr.MAPS_RECEIVE" android:protectionLevel="signature" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="com.wimedias12.orderr.MAPS_RECEIVE" />

    <uses-feature android:glEsVersion="0x00020000" android:required="true"/>

   <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.VPI" >
       <uses-library android:name="com.google.android.maps" />
....
<meta-data
           android:name="com.google.android.maps.v2.API_KEY"
           android:value="AIzaXxXxXXXxXxxXx-WHmjbRpFz4eOqWBXdqUtQ" />
   </application>

ライブラリが適切に参照されていることを確認するためだけに、ここに私のプロジェクト プロパティを示します。 ここに画像の説明を入力

どんな助けでも大歓迎です。ありがとう!

アップデート:

@CommonsWareの答えは正しいものです。しかし、私は Android Studio 、つまり IntelliJ Idea を使用しているため、それを機能させる方法に答える必要があると感じています。

[プロジェクト構造] ウィンドウからすべての参照を削除し、1 つずつ再度追加しましたが、何とか機能しました。構成は上に示した画像と同じです。IntelliJ がライブラリを参照する際に問題があったと思います。

したがって、ライブラリの正しい参照が答えです。

PS私はSherlockFragmentでMapViewを使用することになりました。助けてくれてありがとう。

4

2 に答える 2

3

Android Studio または IntelliJ IDEA を使用しているようですが、それについてコメントすることはできません。

ただし、エラーは通常、Android ライブラリ プロジェクト全体ではなく、Google Play サービスの JAR を追加したプロジェクトに関連しています。Eclipseまたはコマンド ラインからAndroid ライブラリ プロジェクトをアタッチする手順は次のとおりです。選択した IDE に対応する手順を見つける必要があります。

RestaurantHomeFragmentまた、現在、を含むレイアウトを膨張させることにより、フラグメント内でフラグメントを使用しようとしていることにも注意してくださいSupportMapFragment。それは可能ですが、ネストされたフラグメントが複雑さを増すため、そうする強力で明確な理由がない限り、私はそうしません。

于 2013-05-20T22:52:33.433 に答える
0

次のようなことを試してみませんか。

public class MainActivity extends FragmentActivity {

private GoogleMap map;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); <--This line..I dont see why would you inflate it, like you did

    map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
    map.setMyLocationEnabled(true);
}
于 2013-05-20T22:59:26.470 に答える