4

コンテナにをロードSupportMapFragmentしたい。Fragmentエラーは発生せず、APIキーは正常で、Google Playサービスライブラリがインポートされ、すべての権限が呼び出されます。

私はこのように呼びますMapFragment

MapaFragment fragment = new MapaFragment();
FragmentTransaction ft2 = getFragmentManager().beginTransaction();
ft2.replace(android.R.id.tabcontent, fragment)          
    .commit();

これFragmentは次のとおりです。

public class MapaFragment extends SupportMapFragment {
private View v;

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

    return v;       
}

そして、マップのレイアウトは次のように単純です。

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mapa"    
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.SupportMapFragment"/>
4

2 に答える 2

1

すでにxmlレイアウトファイルにSupportMapFragmentを追加しているので、コードで再度追加したり、onCreateViewメソッドをオーバーライドしたりする必要はありません。コメントアウトするだけです。

MapaFragment fragment = new MapaFragment();
FragmentTransaction ft2 = getFragmentManager().beginTransaction();
ft2.replace(android.R.id.tabcontent, fragment)          
    .commit();

そしてこれら

private View v;

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

    return v;       
}

コード行を入力して、アプリを実行してみてください

于 2013-03-25T13:58:58.583 に答える
-1

よろしいですか、APIキーは問題ありませんか?この関数を試して、アクティビティのonCreateメソッドをチェックインしてください。

 private void getShaKey() {

 try {
 PackageInfo info = getPackageManager().getPackageInfo("YOUR_PACKAGE_NAME",
 PackageManager.GET_SIGNATURES);
 for (Signature signature : info.signatures) {
 MessageDigest md = MessageDigest.getInstance("SHA");
 md.update(signature.toByteArray());
 Log.v(TAG, "KeyHash:" + Base64.encodeToString(md.digest(),
 Base64.DEFAULT));
 }
 } catch (NameNotFoundException e) {
 e.printStackTrace();
 } catch (NoSuchAlgorithmException e) {
 e.printStackTrace();
 }

 }

そして、それがマニフェストに入れたものと同じものを返すかどうかを確認してください。

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

次に、getMap()が次のようにnullを返さないかどうかを確認してください。

GoogleMap myMap;

myMap = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.mapa)).getMap();

if(myMap != null){
...
}

これは、「returnv」ステートメントの前にonCreateViewメソッドで実行できます。

于 2013-03-25T12:16:19.137 に答える