扩展FragmentPagerAdapter存在缺少超级构造函数的问题

时间:2013-06-18 00:15:53

标签: android fragmentpageradapter

我今天早些时候发布了关于更新我的PagerAdapter中的幻灯片的信息,并在此处发布:Android ViewPager: Move any page to end programatically?

我曾尝试重写我的FragmentPagerAdapter扩展类来对该页面上的那个进行建模,并且我在构造函数上遇到了一个问题。请参阅下面代码中的注释,了解我遇到的错误。我不确定为什么它会在上面的页面上有效,但不适合我。

private class ScreenSlidePagerAdapter extends FragmentPagerAdapter {
    ContestEntriesModel entries;

    //this yields an error in eclipse that says "Implicit super constructor
    // FragmentPagerAdapter() is undefined. Must explicitly invoke 
    //another constructor   
    public ScreenSlidePagerAdapter(ContestEntriesModel Entries) {
        this.entries = Entries;
    }

    @Override
    public long getItemId(int position) {
        return entries.entries[position].ContestEntryId;

    }

    @Override
    public int getItemPosition(Object object) {
        android.support.v4.app.Fragment f = (android.support.v4.app.Fragment)object;
        for(int i = 0; i < getCount(); i++){

            android.support.v4.app.Fragment fragment = getItem(i);
            if(fragment.equals(f)){

                return i;
            }
        }
        return POSITION_NONE;
    }


    @Override
    public android.support.v4.app.Fragment getItem(int position) {

        long entryId = getItemId(position);
        //Log.d("EntryIds",Integer.toString(entryId));
        if(mItems.get(entryId) != null) {
            return mItems.get(entryId);
        }
        Fragment f = ScreenSlidePageFragment.create(position);
        mItems.put(entryId, f);
        return f;
    }

    @Override
    public int getCount() {
        return NUM_PAGES;
    }
}

我对android / java仍然很绿,所以我不完全确定这意味着什么。我写了这个新问题,因为我不想继续支持我之前的问题。

TIA

编辑:我也尝试使用ArrayList&lt;&gt;完全匹配该样本,并得到相同的错误。

1 个答案:

答案 0 :(得分:3)

好吧我不确定为什么原始代码实际上没有得到你的错误,但是你可以尝试用这种方式更改代码以修复错误并调用超级构造函数,如错误所示:

用这个替换你的构造函数,它应该工作:

public ScreenSlidePagerAdapter(FragmentManager fm, ContestEntriesModel Entries) {
    super(fm);
    this.entries = Entries;
}