Tabs 使用ActionBarSherlock起始片段时发生ClassNotFoundException,并带有;“新实例”;

Tabs 使用ActionBarSherlock起始片段时发生ClassNotFoundException,并带有;“新实例”;,tabs,android-fragments,actionbarsherlock,Tabs,Android Fragments,Actionbarsherlock,我正在将Android 4.x代码转换为使用ActionBarSherlock,这样我们的应用程序就可以与Gingerbread兼容 到目前为止还不错,但它无法启动片段的新实例 My Main活动扩展了SherlockFragmentActivity实现了ActionBar.TabListener 当案例为0时,代码在此失败: @Override public Fragment getItem(int position) { switch (position) {

我正在将Android 4.x代码转换为使用ActionBarSherlock,这样我们的应用程序就可以与Gingerbread兼容

到目前为止还不错,但它无法启动片段的新实例

My Main活动扩展了SherlockFragmentActivity实现了
ActionBar.TabListener

当案例为0时,代码在此失败:

@Override
    public Fragment getItem(int position) {
        switch (position) {
        case 0:
            mFragmentProjects = ProjectsFragment.newInstance(position);
            return mFragmentProjects;                                                      
        case 1:
            mFragmentContacts = FragmentPeople.newInstance(position, 0);
            return mFragmentContacts;               
        }
        return ArrayListFragment.newInstance(position);
    }
如果case为0,则应该初始化片段,但我得到以下异常:
ClassNotFoundException
。我唯一的其他线索是: 在
PathClassLoader
中的“this”和在“name”中显示的是
android.app.ActionBar$TabListener

我想这与TabListener或未正确包含/加载的库有关我已经清理了项目

片段项目片段扩展了SherlockListFragment

newInstance非常严格:

static ProjectsFragment newInstance(int num) {
    ProjectsFragment f = new ProjectsFragment();

    // Supply num input as an argument.
    Bundle args = new Bundle();
    args.putInt("num", num);
    f.setArguments(args);

    return f;
}

事实证明,尽管MainActivity没有对ActivityY的引用,但是ActivityY没有SherlockFragment代码这一事实使它失败了。要以不同的方式描述这一点:

MainActivity使用ProjectsFragment,它是一个列表 当您单击ProjectsFragment中的列表时,它将调用ListsActivity ListsActivity引用ItemsFragment

在主活动开始工作之前,我必须将ItemsFragment更改为Sherlock代码。在使用寻呼机、选项卡和片段时,Java似乎在某种程度上“向前看”