在迁移到 viewpager2 androidx 时发现此错误“无法解析方法 'super(androidx.fragment.app.FragmentManager)'”

Posted

技术标签:

【中文标题】在迁移到 viewpager2 androidx 时发现此错误“无法解析方法 \'super(androidx.fragment.app.FragmentManager)\'”【英文标题】:found this error on migrating to viewpager2 androidx "Cannot resolve method 'super(androidx.fragment.app.FragmentManager)'"在迁移到 viewpager2 androidx 时发现此错误“无法解析方法 'super(androidx.fragment.app.FragmentManager)'” 【发布时间】:2021-12-03 21:57:30 【问题描述】:

当前代码

class ViewPagerAdapter extends FragmentStateAdapter 

        private ArrayList<Fragment> fragments;
        private ArrayList<String> titles;

        ViewPagerAdapter(FragmentManager fm)
            super(fm);
            this.fragments = new ArrayList<>();
            this.titles = new ArrayList<>();
        

【问题讨论】:

这不是constructors available 之一。您是否有理由不使用采用 Fragment(如果您的 ViewPager2 在 Fragment 内)或 FragmentActivity(如果您的 ViewPager2 直接在您的活动布局中)的构造函数? 也收到此错误 - 'com.example.uloimare.MainActivity.ViewPagerAdapter' 中的 'ViewPagerAdapter(androidx.fragment.app.FragmentActivity, androidx.lifecycle.Lifecycle)' 不能应用于 '(androidx .fragment.app.FragmentManager)' 【参考方案1】:

从版本 androidx.viewpager2:viewpager2:1.0.0-alpha03 FragmentStateAdapter 现在需要一个 Lifecycle 对象。添加了两个实用程序构造函数以从 FragmentActivity 主机或 Fragment 主机获取它。

public class PageAdapter extends FragmentStateAdapter     
    public PageAdapter(FragmentManager fragmentManager,Lifecycle lifecycle) 
       super(fragmentManager, lifecycle);
    

初始化 FragmentStateAdapter

PageAdapter PageAdapter = new PageAdapter(getSupportFragmentManager(), getLifecycle());

【讨论】:

以上是关于在迁移到 viewpager2 androidx 时发现此错误“无法解析方法 'super(androidx.fragment.app.FragmentManager)'”的主要内容,如果未能解决你的问题,请参考以下文章

Android ------ ViewPager1和ViewPager2的使用

Android ------ ViewPager1和ViewPager2的使用

Android ------ ViewPager1和ViewPager2的使用

Android 迁移到 Androidx

ViewPager2 迁移后出现无效 ID 0x00000001 错误

迁移到AndroidX后:无法实例化类:androidx.appcompat.widget.ShareActionProvider。