以下に、マップを制御するための基本的なコードを示します。後で本当に高度なことをします。まで、すべてが完璧に機能しているようonResume()
です。
レイアウトは次のとおりです。複数のフラグメントを使用して、1 つのアクティビティでアプリをナビゲートします。これmapFragment
はフラグメントの中に含まれています。これはうまくいきます。ただし、別のフラグメントを追加してこれをバックスタックにプッシュすると、後で戻ってきたときにマップが応答しなくなります。
への呼び出しを に移動してこれを修正しようとしsetupMaps();
ましたがonResume()
、gMaps
から取得すると null になりgMaps = mapFragment.getMap();
ましたsetViews()
。
これをどのように処理すればよいですか?
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
root = inflater.inflate(R.layout.fragment_maps, container, false);
setupMaps();
return root;
}
private void setupMaps()
{
gMaps = null;
fm = getActivity().getSupportFragmentManager();
mapFragment = SupportMapFragment.newInstance();
android.support.v4.app.FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.flMapContainer, mapFragment).commit();
}
@Override
public void onResume()
{
super.onResume();
mapFragment.onResume();
setViews();
}
private void setViews()
{
gMaps = mapFragment.getMap();
getData(); // initializes overlays, markers, polygons etc.
}
@Override
public void onPause()
{
mapFragment.onPause();
super.onPause();
}