android - GoogleMapフラグメントの問題

android google-maps android-fragments

作成したアプリケーションを変換していますが、その一部はGoogleMapコンポーネントであり、フラグメントに挿入しようとしていますが、問題があります。

私は最初にandroid-support-v4-googlemapsを見て、すべてのFragmentActivityがマップを実装することに満足していませんでしたが、これらのinstructions on how to make a MapFragmentActivityに従っていると、マップが表示されるので問題が発生しましたが、回転すると「You are only MapActivityエラーで単一のMapViewを持つことが許可されました」-コードでMapViewを登録するthis answerの後に、フラグメントで、MapViewをMapActivityにしか登録できないというエラーが発生しました。

だから私は今android-support-v4-googlemapsを実装しましたが、それでもローテーションでエラーが発生します。

私は行き止まりになり、少しイライラしています-これを修正する方法を誰かが知っていますか?
答え
android-support-v4-googlemapsライブラリでも同じ問題が発生しました。フラグメントがどのように機能するかを注意深く読んだ後の解決策は非常に簡単でした。基本的に、フレームワークは回転時にフラグメントの状態を保存します。したがって、保存する状態がない場合(つまり、アクティビティの最初の実行時)にのみフラグメントをインスタンス化する必要があります。

これは私のために働いたサンプルコードです:

public class MyMapFragmentActivity extends FragmentActivity {

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

        //... init views, do stuff ...

        // Only instantiate fragments at first run
        if (savedInstancestate == null) {
            // Add map & list fragments
            FragmentManager fm = getSupportFragmentManager();
            MapFragment mapFragment = new MapFragment();
            AnotherFragment another = new AnotherFragment();
            FragmentTransaction ft = fm.beginTransaction();
            ft.add(R.id.fragment_map, mapFragment, "fragment_map");
            ft.add(R.id.fragment_another, anotherFragment, "fragment_another");
            ft.commit();
        }

        //... do more stuff ...
    }

}


この場合、保存するものがないため、onSavedInstanceState()をオーバーライドすることもありませんでした。このソリューションはFragmentMapActivity libraryハックを使用していることに注意してください。

これがお役に立てば幸いです。
関連記事

android - ウィジェットIDを構成アクティビティに渡すことができません

android - Android:Achartengineのグラフの下にリストを作成する方法は?

android - 既存のお客様向けのiPhoneおよびAndroidへのツールの導入

android - LinearLayoutで動的に追加されたビューの位置を取得する方法

android - 再起動時にレシーバーをブロードキャストしますか?

android - dlopenできません。Android2.1ではライブラリをロードできませんが、2.2以降ではロードできます

android - GridViewへのonItemClickListenerは、表示されたWebViewコンポーネントのクリックイベントをキャッチしません。

android - エンタープライズ向けのシングルクリックAndroidアプリのインストール/アップグレード

android - onItemClickのリストビューでfindViewByIdを使用してlinearlayoutからtextViewにアクセスできません

android - Androidでのアプリのローカリゼーション