0

Google マップを [アクション バー] タブで動作させようとしていますが、タイルのない空白のグリッド (完全に空白ではない) しか表示されません。このタブに関連する logcat エラーはありません (maps key works)。

tab3.java:

    package codekappa.smartlocation;

import com.google.android.gms.common.GooglePlayServicesNotAvailableException;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.MapsInitializer;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.app.ActionBar.Tab;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.app.ActionBar;

public class FragmentsTab3 extends Fragment implements ActionBar.TabListener {
    private GoogleMap map;
    private MapView mapView;
    private Fragment mFragment;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment3, container, false);

        // Gets the MapView from the XML layout and creates it
        mapView = (MapView) v.findViewById(R.id.map);
        mapView.onCreate(savedInstanceState);
        // Gets to GoogleMap from the MapView and does initialization stuff
        map = mapView.getMap();
        map.getUiSettings().setMyLocationButtonEnabled(false);
        map.setMyLocationEnabled(true);

        // Needs to call MapsInitializer before doing any CameraUpdateFactory calls
        try {
            MapsInitializer.initialize(this.getActivity());
        } catch (GooglePlayServicesNotAvailableException e) {
            e.printStackTrace();
        }

        return v;
    }


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getActivity().setContentView(R.layout.fragment3);
    }

    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub
        mFragment = new FragmentsTab3();
        // Attach fragment3.xml layout
        ft.add(android.R.id.content, mFragment);
        ft.attach(mFragment);
    }

    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub
        // Remove fragment3.xml layout
        ft.remove(mFragment);
    }

    public void onTabReselected(Tab tab, FragmentTransaction ft) {
        // TODO Auto-generated method stub

    }

}

Fragment3.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:name="com.google.android.gms.maps.MapFragment">

    <com.google.android.gms.maps.MapView android:id="@+id/map"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" />

</LinearLayout>

マニフェスト.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="codekappa.smartlocation"
    android:versionCode="1"
    android:versionName="1.0" >
<permission
        android:name="codekappa.smartlocation.permission.MAPS_RECEIVE"
        android:protectionLevel="signature"/>

    <uses-permission android:name="codekappa.smartlocation.permission.MAPS_RECEIVE"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />

    <uses-sdk
        android:minSdkVersion="15"
        android:targetSdkVersion="18" />

    <application


        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Holo.NoActionBar" >

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyDLX4a6pyeGsDocAHhjGOKSyeAE0aunHbA"/>

        <activity
            android:name="codekappa.smartlocation.AndroidTabLayoutActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

ここで何が悪いのかわからない、アイデア?

4

2 に答える 2

2

同様の問題が発生し、onResume() を追加して問題を解決しました。

@Override
public void onResume() {
    mapView.onResume();
    super.onResume();
}
于 2014-01-15T07:21:41.487 に答える
0

別のメタデータ要素が不足しています。Google Map V2 と SupportMapFragment を使用した空の地図で私の回答を参照してください(いいえ、これは API キーの問題ではありません)。

于 2014-01-15T07:49:36.867 に答える