FragmentPagerAdapter.getItemId()似乎缺失了

时间:2012-12-19 19:32:39

标签: android actionbarsherlock android-support-library

我尝试编写自定义FragmentPagerAdapter类,以便与ViewPager和ActionBarSherlock一起使用。我想覆盖getItemId()方法,因为我有不同的标签,可以根据应用程序的状态来来去去。但getItemId()方法并不存在于android-support-v4.jar中包含的FragmentPagerAdapter实现中(我使用ActionBarSherlock 4.1.0)。我下载了4.2.0,但似乎有一个相同的android-support-v4.jar。

据我所知,getItemId()已于5月10日添加到Android支持库中。

有没有办法解决这个问题?

- 编辑 -

也许Android文档与支持库不同步?

这是指向v4支持库具有getItemId()的文档的链接:http://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html#getItemId(int

但我刚刚从Android SDK Manager(Android支持库Rev 11)下载了最新的android-support-v4.jar。 jar与ABS不同,但它似乎仍然不包括getItemId()方法。

添加getItemId()的更改似乎已经进入v13库了?见https://android.googlesource.com/platform/frameworks/support/+/1a1c2acbc15f8bc9dba05d09dcb18e340474e1c6%5E!/

这是我项目中的一些代码:

import android.support.v4.app.FragmentPagerAdapter;
import com.actionbarsherlock.app.ActionBar;

public class TabsAdapter extends FragmentPagerAdapter implements
        ActionBar.TabListener, ViewPager.OnPageChangeListener
{
    ...
    // This fails to compile:
    // The method getItemId(int) of type TabsAdapter must override or implement a supertype method
    @Override
    public long getItemId(int position) {
        return 0; // TODO
    }
}

1 个答案:

答案 0 :(得分:0)

解决方案是使用从Android SDK Manager(Android支持库Rev 11)下载的JAR覆盖ActionBarSherlock库中的android-support-v4.jar。我想ABS库并不是最新版本的最新版本。幸运的是,似乎没有任何兼容性问题。