Cannot resolve method 'getSupportFragmentManager ( )' inside Fragment

AndroidGoogle MapsAndroid FragmentsFragment

Android Problem Overview


I found the message Cannot resolve method 'getSupportFragmentManager ( )' I want to fragment as activity. because I want to use Maps on the tabs swipe.

public class PETAcikarangsukatani extends Fragment {
Context context;

private static final LatLng SUKATANI = new LatLng(-6.171327, 107.178108);
private static final LatLng WRPOJOK = new LatLng(-6.222411, 107.162158);
private static final LatLng PILAR = new LatLng(-6.257033, 107.156472);
private static final LatLng CIKARANG = new LatLng(-6.256073, 107.143984);


GoogleMap googleMap;
final String TAG = "PathGoogleMapActivity";

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

    View rootView = inflater.inflate(R.layout.activity_path_google_map, container, false);
    context = rootView.getContext();

    SupportMapFragment fm = (SupportMapFragment)getSupportFragmentManager()
            .findFragmentById(R.id.map);
    googleMap = fm.getMap();

Android Solutions


Solution 1 - Android

Inside a Fragment subclass you have to use getFragmentManager in place of getSupportFragmentManager. You will get the support one if the import are from the support library.

Solution 2 - Android

For my case, I made sure that Fragment class is imported from

> android.support.v4.app.Fragment

Not from

> android.app.Fragment

Then I have used

> getActivity().getSupportFragmentManager();

And now its working. If I use activity instance which I got in onAttach() is not working also.

Solution 3 - Android

Extends FragmentActivity instead of Activity

Solution 4 - Android

Use getActivity().getSupportFragmentManager()

Solution 5 - Android

Replace getSupportFragmentManager() with getFragmentManager() if you are working in api 21. OR If your app supports versions of Android older than 3.0, be sure you've set up your Android project with the support library as described in Setting Up a Project to Use a Library and use getSupportFragmentManager() this time.

Solution 6 - Android

Also you can use AppCompatActivity instead of Activity.
Then getSupportFragmentManager() will work.
And also not forget to make your App theme extend AppCompat theme in this case

Solution 7 - Android

As per the documentation, getSupportFragmentManager() is present only inside AppCompatActivity class. It is not present inside Activity class. So make sure your class extends AppCompatActivity class.

public class MainActivity extends AppCompatActivity {
}

Solution 8 - Android

getSupportFragmentManager() is not part of Fragment, so you cannot get it here that way. You can get it from parent Activity (so in onAttach() the earliest) using normal

activity.getSupportFragmentManager();

or you can try getChildFragmentManager(), which is in scope of Fragment, but requires API17+

Solution 9 - Android

> getFragmentManager()

just try this.it worked for my case

Solution 10 - Android

you should use

getActivity.getSupportFragmentManager() like
//in my fragment 
SupportMapFragment fm = (SupportMapFragment)    
getActivity().getSupportFragmentManager().findFragmentById(R.id.map);
 

I have also this issues but resolved after adding getActivity() before getSupportFragmentManager.

Solution 11 - Android

If you're getting "Cannot resolve method getSupportFragmentManager()", try using

this.getSupportFragmentManager()

It works for me when dealing with DialogFragments in android

Solution 12 - Android

If you're instantiating an android.support.v4.app.Fragment class, the you have to call getActivity().getSupportFragmentManager() to get rid of the cannot-resolve problem. However the official Android docs on Fragment by Google tends to over look this simple problem and they still document it without the getActivity() prefix.

Solution 13 - Android

For me I made sure to import v4 like this:

import android.support.v4.app.DialogFragment;

Then used:

getActivity().getFragmentManager()

Solution 14 - Android

I tried all above, but none working

Finally tried this my own

getBaseActivity().getFragmentManager()

and is working .. :)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionIrwansView Question on Stackoverflow
Solution 1 - AndroidBlackbeltView Answer on Stackoverflow
Solution 2 - AndroidMd Sufi KhanView Answer on Stackoverflow
Solution 3 - AndroidVickyView Answer on Stackoverflow
Solution 4 - AndroidGabriel WamunyuView Answer on Stackoverflow
Solution 5 - AndroidAmanView Answer on Stackoverflow
Solution 6 - AndroidLeonid UstenkoView Answer on Stackoverflow
Solution 7 - AndroidSiddarth KantedView Answer on Stackoverflow
Solution 8 - AndroidMarcin OrlowskiView Answer on Stackoverflow
Solution 9 - AndroidVenkat VinayView Answer on Stackoverflow
Solution 10 - AndroidSazid AliView Answer on Stackoverflow
Solution 11 - AndroidJay LinView Answer on Stackoverflow
Solution 12 - AndroidVijay Kumar KantaView Answer on Stackoverflow
Solution 13 - AndroidMarc AlexanderView Answer on Stackoverflow
Solution 14 - AndroidKrishan Kumar MouryaView Answer on Stackoverflow