2015-12-11 3 views
-1

у меня есть класс, который простирался от фрагмента ... и я хочу getSupportFragmentManager() для поиска фрагмента карты ... это фрагмент XMLКак я могу использовать getSupportFragmentManager() в классе, расширенном фрагментом?

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
android:layout_height="match_parent" tools:context="myproject.BlankFragment"> 

<!-- TODO: Update blank fragment layout --> 
<TextView android:layout_width="match_parent" android:layout_height="match_parent" 
    android:text="this is ths map " /> 

<fragment 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" android:id="@+id/mapFrag" 
    tools:context="pk.edu.riu.mrcab.mrcabv1.MapsActivity" 
    android:name="com.google.android.gms.maps.SupportMapFragment" 
    /> 

это фрагмент класс

public class BlankFragment extends Fragment { 
private GoogleMap mMap; 

public BlankFragment() { 

} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_blank, container, false); 

    return rootView; 
} 
private void setUpMapIfNeeded() { 
    if (mMap == null) { 
     mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) 
       .getMap(); 

     if (mMap != null) { 
     } 
    } 
} 

ответ

1

Всякий раз, когда вы пытаетесь получить доступ к вложенному фрагменту, вы должны вызвать getChildFragmentManager() вместо getSupportFragmentManager(). Обратите внимание, что вы должны использовать Фрагмент библиотеки поддержки, если вы не поддерживаете API 17+.

+0

может у пожалуйста, скажите мне, когда я использую «map.addCircle()» функция дает ошибку в консоли .. не во время компиляции ... но когда я использую frgment в эмуляторе или по телефону. . Ошибка консоли: "на com.google.android.gms.maps.internal.IGoogleMapDelegate $ zza $ zza.addCircle (Неизвестный источник) на com.google.android.gms.maps.GoogleMap.addCircle (Неизвестный источник) « –

0

ли вы попробовать

FragmentManager fm = getActivity().getSupportFragmentManager(); 
// and then depending on your case 
fm.findFragmentById(R.id.yourId); 
// or 
fm.findFragmentByTag("YOUR_TAG"); 
// or 
fm.getFragments(); // and then search the right one 

Это способ, которым я обычно делаю это.

+0

no i did't but ... getChildFragmentManager() работает для меня –

+0

О, я не понял, что это был вложенный фрагмент ... – Desdroid

0

использование этого

private FragmentActivity myContext; 

переопределить метод onAttach вашего фрагмента:

@Override 
public void onAttach(Activity activity) { 
myContext=(FragmentActivity) activity; 
super.onAttach(activity); 
} 

и вызвать этот метод, когда вам нужно

FragmentManager fragManager = myContext.getSupportFragmentManager(); //if lib you are using is support v4 

или использовать

FragmentManager fragManager = myContext.getFragmentManager(); 

или вы можете напрямую вызвать этот метод.

getFragmentManager() 
+0

Метод onAttach обесценивается в последних API-интерфейсах –

+0

попробуйте' getActivity(). getFragmentManager() ' – Jayanth

Смежные вопросы