2016-11-26 7 views
0

メインアクティビティといくつかのフラグメントがナビゲーションドロワー経由でナビゲートされるアプリケーションがあります。複数のマップフラグメントが重複する問題

アプリで2つのマップフラグメントを使用していますが、フラグメントマップAからフラグメントマップBに戻ると問題が発生しているようです。 frgamnetで私はそれらのマップの制御を失う一般的にちょうどfragmnetの地図最後のスナップショットを示しています。

これは既知の問題であるようです。 abouve 4メートルに推薦して

google maps api bug report with issue

私のソリューションは、これは、それが画面スペースを占有されることはありませんように発生していない問題が発生し、マップBをロードする前に、マップAをminimiveすることです。

public void hideStupidMaps() { 
    mMapView.getLayoutParams().height = 1; 
    mMapView.getLayoutParams().width = 1; 
    mMapView.invalidate(); 
    mMapView.requestLayout(); 

} 

上記の方法は、私のGmapフラグメントクラスにあります。私はmyMainアクティビティクラスから呼びたいと思います。 navagation引き出しコードで。私の質問は、主なアクティビティからfrgmentsメソッドを呼び出す方法です。特に、そのフラグメントビューを変更するとき。私はビューとそれを上のメソッドに膨らませる必要がありますか?

答えて

0

1つのアクティビティに複数のfragmentsを組み合わせて複数ペインのUIを構築し、複数のアクティビティでフラグメントを再利用することができます。フラグメントは常にアクティビティに埋め込まれていなければならず、フラグメントのライフサイクルはホストアクティビティのライフサイクルの影響を直接受けます。

onCreateView()からレイアウトを返すには、XMLで定義されたレイアウトリソースから展開することができます。これを行うために、onCreateView()にはLayoutInflaterオブジェクトが用意されています。

public static class ExampleFragment extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.example_fragment, container, false); 
    } 
} 

ここでは別と1つのフラグメントを交換し、バックスタックに以前の状態を維持することができます方法は次のとおりです。

// Create new fragment and transaction 
Fragment newFragment = new ExampleFragment(); 
FragmentTransaction transaction = getFragmentManager().beginTransaction(); 

// Replace whatever is in the fragment_container view with this fragment, 
// and add the transaction to the back stack 
transaction.replace(R.id.fragment_container, newFragment); 
transaction.addToBackStack(null); 

// Commit the transaction 
transaction.commit();