Метод getSupportFragmentManager () не определен для типа MapFragment

Я пытаюсь реализовать отображение карты Google, а ниже – мои коды:

package com.fragments; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.SupportMapFragment; public class MapFragment extends SherlockMapFragment { private GoogleMap mMap; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View root = super.onCreateView(inflater, container, savedInstanceState); SupportMapFragment mapFrag= (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.fragment_map); mMap = mapFrag.getMap(); return root; } } 

Im получает ошибку, которая getSupportFragmentManager () не определена для типа MapFragment. Однако я немного смущен, так как импортировал com.google.android.gms.maps.SupportMapFragment. Разве этот метод не должен поступать оттуда? Я пропустил некоторые шаги, чтобы этот метод работал?

Если вы используете этот SherlockMapFragment , попробуйте:

 getSherlockActivity().getSupportFragmentManager(); 

Чувак, я провел последние пару часов, читая этот и другие 2 ваших вопроса (среди прочего), потому что у меня была такая же проблема. У меня было приложение, работающее с ABS + GMapsV2.0 + FragmentActivity, но, поскольку я много слышал, что это хорошая практика, чтобы все это было в фрагментах, я начал переносить его на фрагменты и FragmentActivities в качестве контейнеров.

Когда я портировал карту, произошло точно так же, getSupportFragmentManager () не был распознан, и мне не понравилось довольно много предлагаемого решения, создающего SherlockMapFragment, испортившего библиотеку ABS, поэтому я продолжал копать.

Скорее всего, вы уже знали об этом, но я просто понимаю, что вы (как и я 10 минут назад) пытались обработать фрагмент, который определен в xml, но пока не создан (не индексирован).

Взглянув на документацию, проверяющую порядок вызовов в методах фрагмента, я пробовал код в другом методе после onCreateView () … и менял getSupportFragmentManager () для getFragmentManager () или даже после решения, полученного с помощью getSherlockActivity (). GetSupportFragmentManager ( ) Я мог бы обрабатывать те фрагменты, которые уже существуют.

 public class MapsFragment extends SherlockFragment { private SupportMapFragment mSupportMapFragment; private GoogleMap map; private Marker spotAMarker; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.maps_fragment, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { mSupportMapFragment = (SupportMapFragment) getFragmentManager().findFragmentById(R.id.map_fragment_test); //THIS ONE mSupportMapFragment = (SupportMapFragment) getSherlockActivity().getSupportFragmentManager().findFragmentById(R.id.map_fragment_test); //OR THIS ONE if(mSupportMapFragment != null) { map = mSupportMapFragment.getMap(); if(map != null) { spotAMarker = map.addMarker(new MarkerOptions().position(new LatLng(4.651904,-74.057352)). title(getString(R.string.spot_a_title)).snippet(getString(R.string.spot_a_subtitle)). icon(BitmapDescriptorFactory.fromAsset("images/spot_a.png"))); spotAMarker.setDraggable(true); } else { Toast.makeText(this.getActivity(), getString(R.string.no_map_error), Toast.LENGTH_LONG).show(); } } else { Toast.makeText(this.getActivity(), "No Map Fragment", Toast.LENGTH_LONG).show(); } super.onActivityCreated(savedInstanceState); } } 

Может быть, у вас уже есть обходной путь для этой проблемы, но я хотел поделиться своим опытом с другими, застрявшими в одной и той же проблеме.

Intereting Posts