Jack
Jack

Reputation: 1855

Can not resolve getSupportFragmentManager in non fragment class

I want to add one of my fragment from ,one of my fragment's adapter holder class onClick ,in oreder to do this i have tried below code;

  @Override
public void onClick(View view) {


    try {
        Activity activity = (Activity) context;
        GalleryFragment galleryFragment = new GalleryFragment();
        activity.getSupportFragmentManager().beginTransaction()
                .addToBackStack(null)
                .add(R.id.fragment_container, galleryFragment).commit();


    } catch (Exception e) {
        e.printStackTrace();
    }

}

also tried getActivity.getSupportFragmentManager().beginTransaction() .addToBackStack(null) .add(R.id.fragment_container, galleryFragment).commit();

but getting the error can not resolve .getSupportFragmentManager().How to solve this in my case?.

Upvotes: 1

Views: 677

Answers (2)

Sakura Fukuyoshi
Sakura Fukuyoshi

Reputation: 1471

so it is in your adapter class right?

How about put this in your MainActivity

public FragmentManager getFM() {
    return getSupportFragmentManager();
}

Then in your adapter class

((MainActivity) activity).getFM().beginTransaction()
                .addToBackStack(null)
                .add(R.id.fragment_container, galleryFragment).commit();

or

in your MainActivity

public void goToFragment(Fragment fragment) {
    getSupportFragmentManager().beginTransaction()
                .addToBackStack(null)
                .add(R.id.fragment_container, fragment).commit();
}

Then in your adapter class

((MainActivity) activity).goToFragment(galleryFragment);

Upvotes: 0

Linh
Linh

Reputation: 60973

Change you Activity to FragmentActivity

FragmentActivity activity = (FragmentActivity) context;
activity.getSupportFragmentManager().beginTransaction()...

Upvotes: 1

Related Questions