无法解决 fragmentmanager 中的方法 super() 错误 Android

Cannot resolve method super() error in fragmentmanager Android

我不是 Java 编码员,但我在尝试构建应用程序的同时尝试学习 Java。 我正在尝试添加 2 个片段,一个是登录片段,一个是注册片段,但是在使用超级构造函数时我面临无法解决错误。 谁能指出我做错了什么?

我知道 super 用于访问父 class 构造函数,在我的例子中它不是空的。

MainActivity 代码如下:

public class MainActivity extends FragmentActivity
{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ViewPager2 viewPager = findViewById(R.id.viewPager);

        AuthenticationPagerAdapter pagerAdapter = new AuthenticationPagerAdapter(getSupportFragmentManager());
        pagerAdapter.addFragment(new fragment_login());
        pagerAdapter.addFragment(new fragment_register());
        viewPager.setAdapter(pagerAdapter);
    }

    public static class AuthenticationPagerAdapter extends FragmentStateAdapter
    {
        private ArrayList<Fragment> fragmentList = new ArrayList<>();

        public AuthenticationPagerAdapter(FragmentManager fragmentActivity)
        {
            super(fragmentActivity);
        }

        public Fragment getItem(int i)
        {
            return fragmentList.get(i);
        }

        public int getCount()
        {
            return fragmentList.size();
        }

        void addFragment(Fragment fragment) {
            fragmentList.add(fragment);
        }

        @NonNull
        @Override
        public Fragment createFragment(int position)
        {
            return null;
        }

        @Override
        public int getItemCount()
        {
            return 0;
        }
    }
}

我认为使用 super() 作为 fragmentActivity 参数是不可能的。您应该从位于较高位置的构造函数向 super() 方法发送一个值。顺便说一下,我看不到 MainActivity class 的构造函数。你想从哪一个 class 中获取值?

在构造函数中使用 super() 您试图调用父 class 的构造函数。

在这种情况下,FragmentStateAdapter 有 3 个构造函数:

FragmentStateAdapter(FragmentActivity fragmentActivity)
FragmentStateAdapter(Fragment fragment)
FragmentStateAdapter(FragmentManager fragmentManager, Lifecycle lifecycle)

在你的情况下你有:

public AuthenticationPagerAdapter(FragmentManager fragmentActivity)

super(FragmentManager); 不匹配任何超级构造函数。

您可以使用类似的东西:

public AuthenticationPagerAdapter(FragmentActivity fragmentActivity) {
        super(fragmentActivity);
    }

public AuthenticationPagerAdapter(FragmentManager fragmentManager,Lifecycle lifecycle) {
        super(fragmentManager, lifecycle);
    }