0

マップフラグメントをアクティビティに追加してフラグメントトランザクションを実行して、通常のフラグメントと同じようにマップフラグメントを追加したり削除したりしています。しかし、それらのほとんどはgoogleMapオブジェクトを取得するgetMap()メソッドを持っていますが、マップの現在のバージョンにはgetMap()メソッドがありませんが、getMapAsync()メソッドがあります。 これを使用している人が見つかりました GoogleMap map=((MapFragment)getActivity().getFragmentManager().findFragmentById(R.id.map)).getMap()しかし、ここでもgetMap()は現在のバージョンのマップでは未定義です。 誰も私に達成するための適切な指導を与えてください。だから、すべてのFragmentManagerとFragmentTransactionを使用してアクティビティにマップフラグメントを動的に追加する

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 
    xmlns:tools="http://schemas.android.com/tools" 
 
    android:id="@+id/activity_main" 
 
    android:layout_width="match_parent" 
 
    android:layout_height="match_parent" 
 
    tools:context="com.example.kamaloli.mapdemo.MainActivity"> 
 
    <fragment xmlns:android="http://schemas.android.com/apk/res/android" 
 
     xmlns:tools="http://schemas.android.com/tools" 
 
     android:id="@+id/main_activity_map" 
 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
 
     android:layout_width="match_parent" 
 
     android:layout_height="match_parent" 
 
     tools:context="com.example.kamaloli.mapdemo.MainActivity" /> 
 
</RelativeLayout>

:activity_mainは地図フラグメントを含むレイアウトである

public class MainActivity extends Fragment{ 
GoogleMap map; 
MapView v; 
@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view=inflater.inflate(R.layout.activity_main,container,false); 
    return view; 
} 

}

:ここに は、私はこれを達成する方法のコードであり、私は、通常のfragのようなFragmentトランザクションを使用してこのFragmentを別のアクティビティに追加したいと思っています。 。

+0

フラグメントにこのマップフラグメントを配置し、このフラグメントにアクティビティを置き換えることができます – tahsinRupam

+0

例を挙げることはできますか? –

+0

しばらくお待ちください。 – tahsinRupam

答えて

1

フラグメント(MapFragment)レイアウトファイルにマップフラグメントを追加します。)(onViewCreatedにコードの下に追加

private MapView mapView; 
private GoogleMap googleMap; 

を:

mapView = (MapView) view.findViewById(R.id.map); 
mapView.onCreate(savedInstanceState); 
mapView.onResume(); 
mapView.getMapAsync(this); 

 <com.google.android.gms.maps.MapView 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

宣言のMapViewと公にGoogleマップ

フラグメントにOnMapReadyCallbackを実装し、このメソッドを追加してください:

@Override 
public void onMapReady(GoogleMap map) { 
    googleMap = map; 
} 

activity_main.xmlでのコンテナの追加:

 <FrameLayout 
     android:id="[email protected]/container" 
     android:layout_width = "match_parent" 
     android:layout_height = "match_parent"> 

     // Add all activity contents here 

    <FrameLayout/> 

をMapFragmentと、このコンテナを交換してください:

FragmentManager fm = getFragmentManager(): 
fm.beginTransaction.replace(R.id.container, new MapFragment()).commit(); 

・ホープ、このことができます。

+0

それは動作しません。互換性のないタイプの「フラグメントをGoogleMapに変換する」と言っています。また、getMap()メソッドも使用できませんが、getMapAsync()は存在します。 –

+0

私は自分の答えを変えました。これで、getMap()を使う必要はありません。また廃止されました。代わりに、getMapAsyncを使用します。さらに、断片の中で断片を呼び出すべきではありません。代わりにmapviewを使用してください。私は主に答えを変えました。更新された回答を確認してください。 – tahsinRupam

+1

はい、チャームのように働いた。ご協力いただきありがとうございますtahsinRupam。 –

関連する問題