2013-08-22 8 views
7

私は現在Android 4.3用に開発中です。
背景:
私は3つの異なる部分をスクロールするためにpageViewerを使用しています。 私の2番目のフラグメント(タブ2)には、SupportMapFragmentとその他のコンテンツを持つXMLがあります。下図のように:
My problem http://imageupload.co.uk/files/vrhg1e06x977rkm1vhmd.jpg
私の試み:
私はSupportMapFragmentのために、私はFragmentPagerAdapterには適用されませんFragmentActivityが必要であることに気づいたウェブを検索中。 私はマップを制御し、フラグメント内の残りのコンテンツを制御する能力を持つ必要があります。
私の質問:
フラグメントにコンテンツを追加しているのに、どのようにしてSupportMapFragmentをviewPagerで使用できますか?私のコードについてV2をviewPagerでマップする

より:FragmentPagerAdapter内部のgetItemで 私は私のクラスのためSupportMapFragmentを拡張することはできませんので、したがって、私はインターネット上で任意の解決策を見つけることができませんでした(各フラグメントは、クラスを持っている)シングルトンフラグメントを返しますよより多くのデータを持っています。

答えて

21

Android 4.2以降(pre-Jellyのサポートライブラリにも)nested fragmentsを使用できます。あなたはこのようなフラグメントを作成する方法を見ることができます

は次のとおりです。

public class MyFragment extends Fragment { 

    private SupportMapFragment fragment; 
    private GoogleMap map; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.layout_with_map, container, false); 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     FragmentManager fm = getChildFragmentManager(); 
     fragment = (SupportMapFragment) fm.findFragmentById(R.id.map_container); 
     if (fragment == null) { 
      fragment = SupportMapFragment.newInstance(); 
      fm.beginTransaction().replace(R.id.map_container, fragment).commit(); 
     } 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     if (map == null) { 
      map = fragment.getMap(); 
      map.addMarker(new MarkerOptions().position(new LatLng(0, 0))); 
     } 
    } 
} 

hereからコピーしたコードの上に。

注釈:お客様のカスタムFragmentsのレイアウトには<fragment>タグを含めることはできません。

+0

map_containerの内容は次に何ですか? –

+0

@AdrianOlar 'map_container'は通常、上記の例のようにコードを介して追加されたフラグメントをホストする' FrameLayout'です。 –

+0

お返事ありがとう、本当に助かりました。 –

関連する問題