1

私はアンドロイド開発が初めてです。簡単なことから始めましたが、最初のステップはマップを表示するだけです。地図を表示するために私が行った次の手順は次のとおりです。1)Google APIキーを取得し、android.mainfestを構成します。アクセス許可を追加しました: MAPS_RECEIVE、ACCESS_COARSE_LOCATION、INTERNET、および要素の Google マップ v2 API キー。2) google-play-services_lib をワークスペースにインポートしました。それをビルドし、その参照を私のプロジェクトに追加します。3) Android 2.3.3(api 10) を使用したため、MapFragment の代わりに SupportMapFragment を使用しました。これが私のレイアウトです:

<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=".ShowMapActivity" >
        <fragment android:id="@+id/map"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                class="com.google.android.gms.maps.SupportMapFragment "/>
</RelativeLayout>

そして、ここに ShowMapActivity の私のコードがあります( FragmentActivity が拡張されています)

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show_map);
        if(findViewById(R.id.map)!=null)
        {
            SupportMapFragment fragment = new SupportMapFragment();
            getSupportFragmentManager().beginTransaction().add(R.id.map,fragment).commit();
        }
}

しかし残念なことに、エミュレーターでアプリを実行すると、まだログ cat にエラーが発生します : クラス フラグメントの膨張エラーと com.google.android.gms.maps.MapFragment: クラス名が存在し、パブリックであり、空のコンストラクターがあることを確認してください公開されています。編集:ここに私の丸太猫があります:

05-26 13:52:25.457: E/AndroidRuntime(289): FATAL EXCEPTION: main
05-26 13:52:25.457: E/AndroidRuntime(289): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.com.vogella.android.locationapi.maps/com.vogella.android.locationapi.maps.ShowMapActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
05-26 13:52:25.457: E/AndroidRuntime(289):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
05-26 13:52:25.457: E/AndroidRuntime(289):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
05-26 13:52:25.457: E/AndroidRuntime(289):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
05-26 13:52:25.457: E/AndroidRuntime(289):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
05-26 13:52:25.457: E/AndroidRuntime(289):  at android.os.Handler.dispatchMessage(Handler.java:99)
05-26 13:52:25.457: E/AndroidRuntime(289):  at android.os.Looper.loop(Looper.java:123)
05-26 13:52:25.457: E/AndroidRuntime(289):  at android.app.ActivityThread.main(ActivityThread.java:3683)
05-26 13:52:25.457: E/AndroidRuntime(289):  at java.lang.reflect.Method.invokeNative(Native Method)
05-26 13:52:25.457: E/AndroidRuntime(289):  at java.lang.reflect.Method.invoke(Method.java:507)
05-26 13:52:25.457: E/AndroidRuntime(289):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
05-26 13:52:25.457: E/AndroidRuntime(289):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-26 13:52:25.457: E/AndroidRuntime(289):  at dalvik.system.NativeStart.main(Native Method)
05-26 13:52:25.457: E/AndroidRuntime(289): Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
05-26 13:52:25.457: E/AndroidRuntime(289):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:587)
05-26 13:52:25.457: E/AndroidRuntime(289):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
05-26 13:52:25.457: E/AndroidRuntime(289):  at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
05-26 13:52:25.457: E/AndroidRuntime(289):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
05-26 13:52:25.457: E/AndroidRuntime(289):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
05-26 13:52:25.457: E/AndroidRuntime(289):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
05-26 13:52:25.457: E/AndroidRuntime(289):  at android.app.Activity.setContentView(Activity.java:1657)
05-26 13:52:25.457: E/AndroidRuntime(289):  at com.vogella.android.locationapi.maps.ShowMapActivity.onCreate(ShowMapActivity.java:22)
05-26 13:52:25.457: E/AndroidRuntime(289):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-26 13:52:25.457: E/AndroidRuntime(289):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
05-26 13:52:25.457: E/AndroidRuntime(289):  ... 11 more
05-26 13:52:25.457: E/AndroidRuntime(289): Caused by: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment com.google.android.gms.maps.SupportMapFragment : make sure class name exists, is public, and has an empty constructor that is public

では、どうすれば解決できますか。どのステップが欠けているか間違っていました
か助けてくれてありがとう、そして私の英語のライティングスキルが悪いのでみんなごめんなさい

4

2 に答える 2

0

私はかつてまったく同じ問題を抱えていました。問題の原因は... ライブラリへのファイル パスが長すぎます。

google-play-services_lib がフォルダ構造でネストされすぎているようです。別の場所にコピーしてみてください。

于 2013-05-26T08:11:04.230 に答える
0

解決策が見つからなかった場合は、SupportMapFragment をロードするアクティビティが android.support.v4.app.FragmentActivity を拡張していることを確認してください。

于 2013-05-31T01:21:16.070 に答える