2016-05-21 13 views
1

異なるフラグメントのスライディングタブを使用しています。マップフラグメントでは、ネストされたフラグメントをXMLとして使用することはできません。以下はJavaコードとXMLfileです。 私はgetMapAsync()メソッドに固執しています。どのようにしてgetMapAsyncを使用してマップを取得できますか?私は本当にあなたの協力に感謝します。フラグメント内のgetMapAsync

食品フラグメントのJava:

public class FoodFragment extends Fragment { 

private SupportMapFragment mapfragment; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
View view= inflater.inflate(R.layout.food_layout, null); 

mapfragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.maps_frame); 
if (mapfragment == null) { 
    FragmentManager fragmentManager = getFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    mapfragment = SupportMapFragment.newInstance(); 
    fragmentTransaction.replace(R.id.maps_frame,mapfragment).commit(); 
} 
mapfragment.getMapAsync((OnMapReadyCallback) getActivity().getApplicationContext()); 

return view; 

} 
} 

食品XMLファイル、あなたが代わりにここのような匿名クラスとしてOnMapReadyCallback()の新しいインスタンスを作成することができますOnMapReadyCallbackとして

<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="2in" 
    android:id="@+id/maps_frame" 
    android:background="@color/colorAccent" 
    android:layout_alignParentBottom="true"> 

    </FrameLayout> 
+0

現在、どのような例外が表示されていますか? –

+0

ご挨拶ありがとうございます。例外は「android.app.Applicationはcom.google.android.gms.maps.OnMapReadyCallbackにキャストできません」 – Shahek

答えて

2

あなたApplicationContextすることはできませんキャストは何をされます検索の可能性があります

mapfragment.getMapAsync(new OnMapReadyCallback() { 
     @Override public void onMapReady(GoogleMap googleMap) { 
      if (googleMap != null) { 
       // your additional codes goes here 
       ..... 
      } 
    } 

this exampleも必要に応じて参照できます。

+0

ありがとうございます。 – Shahek

関連する問題