簡體   English   中英

無法解決 fragmentmanager Android 中的方法 super() 錯誤

[英]Cannot resolve method super() error in fragmentmanager Android

我不是 Java 編碼員,而是在嘗試學習 Java 的同時嘗試構建應用程序。 我正在嘗試添加 2 個片段,一個是登錄片段,一個是注冊片段,但是在使用超級構造函數時,我面臨無法解決錯誤。 誰能建議我做錯了什么?

我知道 super 用於訪問父類構造函數,在我的情況下它不是空的。

以下是 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;
        }
    }
}

我認為對fragmentActivity參數使用super()是不可能的。 您應該從位置較高的構造函數向super()方法發送一個值。 順便說一下,我看不到MainActivity類的構造函數。 你想從哪一類得到值?

在構造函數中使用super()您試圖調用父類的構造函數。

在這種情況下, 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);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM