2016-06-26 5 views
1

こんにちは私はMapFragmentを持っているアプリケーションで次のレイアウトを持っています。マップをロードしますが、参照を取得しようとするとコードでnullが返されます。ここでレイアウトでMapFragmentを見つけたらnullを返します

メインレイアウトファイル

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout 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:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:openDrawer="start"> 

<include 
    layout="@layout/app_bar_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

<android.support.design.widget.NavigationView 
    android:id="@+id/nav_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:fitsSystemWindows="true" 
    app:headerLayout="@layout/nav_header_main" 
    app:menu="@menu/activity_main_drawer" /> 

</android.support.v4.widget.DrawerLayout> 

はapp_bar_mainレイアウトファイルは、私がmapfragementの参照を取得している使用しています

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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" 

app:layout_behavior="@string/appbar_scrolling_view_behavior" 
tools:context=".activities.MainActivity" 
tools:showIn="@layout/app_bar_main"> 

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
    android:name="com.google.android.gms.maps.MapFragment" 
    android:id="@+id/mapFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

</RelativeLayout> 

コードをmapfragementた

<?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=".activities.MainActivity"> 

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

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:popupTheme="@style/AppTheme.PopupOverlay" /> 

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

<include layout="@layout/content_main" /> 

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

とcontent_mainレイアウトです下に置く活動の作成

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

そのが

答えて

1

変更

android:name="com.google.android.gms.maps.MapFragment" 


android:name="com.google.android.gms.maps.SupportMapFragment" 

には、XMLでMapFragmentを追加し、あなたのコードの例外であるJavaでSupportMapFragmentをgetingです

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" 
tools:context=".activities.MainActivity" 
tools:showIn="@layout/app_bar_main"> 

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

</RelativeLayout> 

このXMLを試してみてください。

1

が置き換えクラッシュなぜわからない:

android:name="com.google.android.gms.maps.MapFragment" 

で:Javaコードで

android:name="com.google.android.gms.maps.SupportMapFragment" 

、あなたがSupportMapFragmentおよびフラグメントのバックポートを使用しようとしています。それでいいですが、レイアウトXMLでもSupportMapFragmentを使用する必要があります。

わからない、なぜその将来

をクラッシュ、あなたの質問であなたのコードと一緒にJavaスタックトレースを投稿してください。

関連する問題