0

私はiOSの男で、Androidに移行しようとしています。この状況で何をすべきかを説明/助けてくれる人が必要です。タブホスト フラグメント (3 つのタブ) を持つアプリがあります。現時点では、3 つの異なる単純なフラグメントをロードするだけで、正常に動作します。

ここで、MapActivity を最初のタブに実装したいと思います。残念ながら、これを MapActivity に拡張することはできません。現在、Fragment に拡張されています。

インターネットで検索しましたが、完璧な解決策を見つけることができました。

このリンクは解決策の 1 つですが、非推奨の LocalActivityManager を使用しています。

私の質問は、2 つのフラグメントと、マップ用の 1 つの個別のアクティビティをフラグメント タブホストにロードすることはできますか。可能であれば、それを実装する方法を教えてください。

注: このチュートリアルに基づいて、アプリのタブホスト フラグメント ベースを構築しました。

私から百万の感謝。

4

1 に答える 1

1

FragmentActivityがActivityの代わりにMapActivityを拡張するサポートライブラリのこの修正版を使用することが1つの解決策になると思います。

https://github.com/petedoyle/android-support-v4-googlemaps

次のように、Activity クラス内に MapView オブジェクトを作成し、それをフラグメントに渡す必要があることに注意してください。

public class MyMapActivity extends FragmentActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Exchanger.sMapView = new MapView(this, "your_api_key");

    }

    public static class Exchanger {
        public static MapView sMapView;
    }
}

そしてフラグメントは

public class MapFragment extends Fragment {

    @Override
    public void onCreate(Bundle args) {
        super.onCreate(args);
        setRetainInstance(true);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup vg, Bundle data) {

        final ViewGroup parent = (ViewGroup) MyMapActivity.Exchanger.sMapView.getParent();
        if (parent != null)
            parent.removeView(MyMapActivity.Exchanger.sMapView);

        return MyMapActivity.Exchanger.mMapView;
    }

}

MyMapActivityTabsFragmentActivityリンクしたチュートリアルのです。サポート ライブラリの変更されたバージョンを使用することを忘れないでください (ダウンロード リンク)

上記の方法は廃止されました。 MapFragment を使用できるようになりました: http://developer.android.com/google/play-services/maps.html

于 2012-08-01T13:55:18.843 に答える