简体   繁体   中英

Cannot resolve method getParentFragmentManager

I am cleaning a small Android project, and removing the usage of support libraries and the usage of androidx instead seemed promising. Nevertheless, I am facing an strange problem in my MainActivity.java:

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;

private void setupFragments(){
    //...
    ViewPager viewPager = findViewById(R.id.pager);
    ViewPagerAdapter adapter = new ViewPagerAdapter(getParentFragmentManager());
    viewPager.setAdapter(adapter);
    viewPager.setOffscreenPageLimit(2);
    tabLayout.setupWithViewPager(viewPager);
    //...

In the old version, getFragmentManager() was used instead. Nevertheless, now I get the Cannot resolve method getParentFragmentManager compilation error, and get suggested by Android Studio about creating my own getParentFragmentManager function. According to my research, this function should be accessible when importing the androidx libraries, as stated above.

What am I missing here?

EDIT: In case it is related, I am also getting a deprecated warning for FragmentManager from androidx in the definition of my FragmentPagerAdapter:

public class ViewPagerAdapter extends FragmentPagerAdapter { ViewPagerAdapter(FragmentManager fm) { // <---- Deprecated super(fm); }

Regarding the version of androidx.fragment:fragment being used, I am only using implementation 'androidx.fragment:fragment-ktx:1.2.2' as suggested in answers (had nothing before that).

Importing androidx.fragment.app.FragmentTransaction gave no changes. Also is shown as not being used.

The function has been added in the 1.2.0 version of the Fragment component.

Try changing in your build.gradle file (with current stable version):
implementation 'androidx.fragment:fragment-ktx:1.2.2 '

您应该尝试使用: activity.getSupportFragmentManager()

Use getSupportFragmentManager(); instead of using getParentFramentManager(); and it should work fine.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM