2016-06-01 13 views
0

私の現在のプロジェクトでは、BaseActivityの子アクティビティ機能があります。子アクティビティでcoordinatelayout内にGoogleマップが表示されない

ベースのxml:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context=".Activity.BaseActivity"> 

<LinearLayout 
    android:id="@+id/llBody" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"></LinearLayout> 

<include layout="@layout/toolbaar_layout"/> 
</FrameLayout> 

だから、すべての子アクティビティがこのllbodyレイアウトに追加し、必要に応じて表示されます。

私の活動の1つでは、地図を表示する必要があります。

私はいつものようにマップを示す。その

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@+id/map" 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context=".Activity.MapsActivity"/> 

のような単純なmapfragment XMLを作成した場合。私は少しのデザインやものをやろうと思うので、私は浮動ボタンが必要なので、私はコーディネートをしなければなりません。だから私はこの

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:context=".Activity.BaseActivity"> 

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/collapse_toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

     <fragment 
      android:id="@+id/map" 
      android:name="com.google.android.gms.maps.MapFragment" 
      android:layout_width="match_parent" 
      android:layout_height="300dp" 
      android:fitsSystemWindows="true" 
      app:layout_collapseMode="parallax" 
      app:layout_scrollFlags="scroll|enterAlways"/> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:layout_collapseMode="pin"/> 

    </android.support.design.widget.CollapsingToolbarLayout> 

</android.support.design.widget.AppBarLayout> 

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom|end" 
    android:layout_margin="@dimen/fab_margin" 
    android:src="@android:drawable/ic_dialog_email"/> 

</android.support.design.widget.CoordinatorLayout> 

のようなXMLを作成した。しかし、今の問題はmapfragmentを見つけることが、そのことはできません、それは

mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 

mapfragmentがnullで発生します。

何が間違っている可能性がありますか?任意の手掛かり..

助けてください..あなたが問題を引き起こす可能性がありSupportMapFragmentMapFragmentキャストされている

答えて

3

SupportMapFragmentAppCompatライブラリを使用してください。

xmlのフラグメントを次のように変更します。

<fragment 
      android:id="@+id/map" 
      android:name="com.google.android.gms.maps.SupportMapFragment" 
      android:layout_width="match_parent" 
      android:layout_height="300dp" 
      android:fitsSystemWindows="true" 
      app:layout_collapseMode="parallax" 
      app:layout_scrollFlags="scroll|enterAlways"/> 
1

私はthis.Itのように変更されたJavaコードであなたの同じxmlファイルを使用するには、私のため

GoogleMap mGoogleMap = ((MapFragment) getFragmentManager().findFragmentById(
       R.id.map)).getMap(); 

を働いているマニフェスト

<meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="write_your_api_key_here" /> 
でAPIキーを追加します。
関連する問題