2013-02-11 12 views
5

ユーザがアクションバーボタンを押すことでリストフラグメントとマップフラグメントを切り替えることができます。現在、私はそれらの間でスワップすることはできますが、フラグメントから実際のGoogleMapオブジェクトを取得しようとすると、nullポインタが発生しています。カメラを移動しようとすると、GoogleMapオブジェクトがヌルでそのコードをスキップするため移動しません。私は実際にフラグメントからxmlを作成することは決してなく、コードを使用しているに過ぎないのかどうかは分かりません。私のコードは次の通りです:Androidマップ間のスワップv2フラグメントとリストフラグメント

public class MapFragment extends SherlockMapFragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View root = super.onCreateView(inflater, container, savedInstanceState); 
     return root; 
    } 

} 

    @Override 
    public void swapFragments() { 
     FragmentManager fm = getSupportFragmentManager(); 
     FragmentTransaction transaction = fm.beginTransaction(); 
     if (listFragment.isVisible()) { 
      sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); 
      transaction.replace(R.id.root, mapFragment); 
     } else { 
      sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); 
      transaction.replace(R.id.root, listFragment); 
     } 
     transaction.commit(); 
    } 

    @Override 
    public void setupMapFragment() { 
     mapFragment = new MapFragment(); 
     mMap = mapFragment.getMap(); 
     if (mMap != null) { 
      mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
        new LatLng(BuzzbabaApplication.latitude, 
          BuzzbabaApplication.longitude), 14)); 
     } 
    } 

答えて

3

私もこの問題に遭遇しました。 MapViewを動的にロードしているため、前述のように問題が発生します。これは、GoogleMapオブジェクトが読み込まれる前にMapViewの読み込みが完了したことを意味します。

A Googleマップのみ

マイ溶液を作成することであった基礎となるマップ・システムがロードされ、断片における根本的なビューが

http://developer.android.com/reference/com/google/android/gms/maps/SupportMapFragment.html)の存在GetMapリクエスト()を使用して取得することができますXML内のフラグメントをマップします。つまり、ビューの読み込みが完了すると、GoogleMapオブジェクトも読み込まれ、参照できるようになります。

+0

Hmm ...現在、私の主なレイアウトには、別のリストフラグメントを配置するために使用するFrameLayoutがあります。マップフラグメントを配置するのを避けたかったのは、基本的には、何か、これは唯一の選択肢ですか? – egfconnor

+1

Nevermind、onActivityCreatedのMapFragmentにコールバックを追加しました。これは、GoogleMapがnullではなく、準備ができていることを通知します。それはそれを行うための安全な場所のようです。 – egfconnor

+0

ええ、コールバックを追加すると、それについても行く良い方法です。ニースの解決策。 –

関連する問題