4

だから私はAndroid用のGoogleマップAPI v2に従っていて、画面上に基本的な地図を表示しようとしていました。すべての手順を実行した後、「Error inflating class fragment」というメッセージが表示されます。他の人も同じ問題に遭遇しましたが、どの解決策もうまくいかないようです。正確なエラー:android.view.InflateException: Binary XML file line #10: Error inflating class fragment

.java:

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


public class GoogleMaps extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_google_maps);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.google_maps, menu);
        return true;
    }

}

xml:

<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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".GoogleMaps" >
    <fragment 
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment"
        android:name="com.testing.svma.MainActivity"/>
</RelativeLayout>

Google Play サービスを正しく設定したと思いますが、ページに初めて移動したときにダウンロードするように求められます。ここに私のproject.propertiesがあります:

# Project target.
target=android-17
android.library=false
android.library.reference.1=../../../android-sdks/extras/google/google_play_services/libproject/google-play-services_lib

丸太の猫:

...
03-06 21:12:44.751: I/System.out(9122): Debugger has connected
03-06 21:12:44.751: I/System.out(9122): waiting for debugger to settle...
03-06 21:12:46.166: I/System.out(9122): debugger has settled (1487)
03-06 21:12:50.634: D/dalvikvm(9122): DexOpt: couldn't find field Landroid/content/res/Configuration;.smallestScreenWidthDp
03-06 21:12:50.634: W/dalvikvm(9122): VFY: unable to resolve instance field 23
03-06 21:12:50.634: D/dalvikvm(9122): VFY: replacing opcode 0x52 at 0x0012
03-06 21:12:50.634: D/dalvikvm(9122): VFY: dead code 0x0014-0018 in Lcom/google/android/gms/common/GooglePlayServicesUtil;.b (Landroid/content/res/Resources;)Z
03-06 21:12:51.126: W/dalvikvm(9122): Unable to resolve superclass of Lmaps/p/s; (427)
03-06 21:12:51.126: W/dalvikvm(9122): Link of class 'Lmaps/p/s;' failed
03-06 21:12:51.126: W/dalvikvm(9122): Unable to resolve superclass of Lmaps/y/bo; (3820)
03-06 21:12:51.126: W/dalvikvm(9122): Link of class 'Lmaps/y/bo;' failed
03-06 21:12:51.126: W/dalvikvm(9122): Unable to resolve superclass of Lmaps/i/k; (4208)
03-06 21:12:51.126: W/dalvikvm(9122): Link of class 'Lmaps/i/k;' failed
03-06 21:12:51.126: E/dalvikvm(9122): Could not find class 'maps.i.k', referenced from method maps.z.ag.a
03-06 21:12:51.126: W/dalvikvm(9122): VFY: unable to resolve new-instance 3540 (Lmaps/i/k;) in Lmaps/z/ag;
03-06 21:12:51.126: D/dalvikvm(9122): VFY: replacing opcode 0x22 at 0x006d
03-06 21:12:51.149: D/dalvikvm(9122): VFY: dead code 0x006f-007f in Lmaps/z/ag;.a (Landroid/view/LayoutInflater;Lcom/google/android/gms/maps/GoogleMapOptions;ZLjava/lang/String;)Lmaps/z/ag;

これらのスレッドから解決策を試しましたが、うまくいきませんでした:

クラス フラグメントの拡張中にエラーが発生しました

Google マップ V2 - クラス Fragment の拡張中にエラーが発生しました

また、このチュートリアルに従ったところ、同じエラーが発生しました。

https://www.youtube.com/watch?v=OZRgiwGfvSQ

4

5 に答える 5

1

これらの行をマニフェストに追加することで、この問題を修正しました。

<meta-data android:name="com.google.android.gms.version"
       android:value="@integer/google_play_services_version"/>
于 2014-01-01T16:32:02.097 に答える
0

同じエラーが発生し、異なるスタックオーバーフローの回答から複数回試行して解決することができました:

どれが問題の解決に役立つかはわかりませんが、私が行ったことをリストします。

  • プロジェクトを右クリック -> プロパティ -> Android -> プロジェクトのビルド ターゲットを Android 4.1.2 (Android オープン ソース プロジェクト) に変更 -> ライブラリの下で、google-play-service-lib を削除して再度追加 -> [適用] をクリック" -> 続いて "OK"
  • プロジェクトを右クリック -> Android Tools -> Fix Project Properties (by Emil Adz )
  • クラスで Google マップを参照する (by Basavaraj Hampali )

    private GoogleMap mMap;
    
    mMap = ((SupportMapFragment) this.getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
    if (mMap== null) {
        Toast.makeText(this,"Map not Available", Toast.LENGTH_LONG).show();
    }
    
  • 「FragmentActivity」だけでなく android.support.v4.app.FragmentActivity を拡張します (by ayush1794 )

    extends android.support.v4.app.FragmentActivity
    

それが役立つことを願っています:)

于 2013-12-08T04:35:28.283 に答える
0

このリンクのすべての手順に従ってください

Google マップの参照を見逃していたので、これをコードに追加してください

public class GoogleMaps extends FragmentActivity {
    private GoogleMap mMap;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_google_maps);
        mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
                    .getMap();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.google_maps, menu);
        return true;
    }

}

マップキーを追加する以外に、プレイサービスをプロジェクトに追加します

于 2013-06-18T12:34:22.913 に答える