簡體   English   中英

調用函數/方法時出錯?

[英]Error when invoking a function/method?

出於某種原因,當我調用addFrag函數/方法來填充我的片段和字符串標題時,我收到錯誤。 我正在創建一個帶適配器的簡單ViewPager 順便說一下,這一切都在片段中。 這是代碼:

public class HomeFragment extends Fragment {

    private View view;
    private ViewPager viewPager;
    private TabLayout tabLayout;
    private PagerAdapter adapter;

    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup viewGroup,
                             @Nullable Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.home_fragment, viewGroup, false);

        viewPager = (ViewPager) view.findViewById(R.id.viewpager);
        setUpViewPager(viewPager);

        tabLayout = (TabLayout) view.findViewById(R.id.sliding_tabs);
        tabLayout.post(new Runnable() {
            @Override
            public void run() {
                tabLayout.setupWithViewPager(viewPager);
            }
        });
        return view;
    }



    private void setUpViewPager(ViewPager viewPager) {
        adapter = new ViewPagerAdapter(getChildFragmentManager());
        adapter.addFrag(new ContentFragment(), "ONE");
        adapter.addFrag(new ContentFragment(), "TWO");
        adapter.addFrag(new ContentFragment(), "THREE");
        viewPager.setAdapter(adapter);
    }


}

class ViewPagerAdapter extends FragmentPagerAdapter{
    private final List<Fragment> fragmentList = new ArrayList<>();
    private final List<String> tabTitles = new ArrayList<>();

    //Default Fragment Constructor
    public ViewPagerAdapter(FragmentManager fm) {
        super(fm);
    }


    @Override
    public Fragment getItem(int position) {
        return fragmentList.get(position);
    }

    @Override
    public int getCount() {
        return fragmentList.size();
    }
    public void addFrag(Fragment fragment, String title){
        fragmentList.add(fragment);
        tabTitles.add(title);
    }
    @Override
    public CharSequence getPageTitle(int position){
        return tabTitles.get(position);
    }

}

當我嘗試輸入adapter.addFrag(new ExampleFragment(), "Hello"); 我得到一個錯誤無法解析方法addFrag。 任何幫助將不勝感激。

adapter被聲明為PagerAdapter ,而不是ViewPagerAdapter 因此,您可以在adapter上使用的唯一方法是為PagerAdapter定義的PagerAdapter 編譯器當時不知道該adapter實際上是一個ViewPagerAdapter - 我可以告訴它,因為我在上面看到了賦值adapter = new ViewPagerAdapter(...) ,但編譯器不允許注意(那些是語言的規則)。 代替:

ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getChildFragmentManager());

使用viewPagerAdapter調用addFrag方法,最后分配adapter = viewPagerAdapter;

更改private PagerAdapter adapter; private ViewPagerAdapter adapter;

要么

將轉換適配器鍵入ViewPagerAdapter ,然后調用addFlag

((ViewPagerAdapter)adapter).addFlag(new ContentFragment(), "ONE");

暫無
暫無

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

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