使用ActionBarSherlock使用“newInstance”启动Fragment时的ClassNotFoundException

时间:2012-10-16 09:29:08

标签: tabs android-fragments actionbarsherlock

我正在转换Android 4.x代码以使用ActionBarSherlock,以便我们的应用程序可以与Gingerbread兼容。

到目前为止一切顺利,但它无法启动片段的新实例。

我的MainActivity扩展了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。我唯一的其他线索是: {“1}}中的”this“和”{“代表PathClassLoader

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

片段ProjectsFragment扩展android.app.ActionBar$TabListener

newInstance非常简单:

SherlockListFragment

1 个答案:

答案 0 :(得分:0)

事实证明,尽管MainActivity没有引用ActivityY,但事实上ActivityY没有SherlockFragment代码使其失败。用不同的方式描述:

MainActitivy使用ProjectsFragment作为列表 当您单击ProjectsFragment中的列表时,它会调用ListsActivity ListsActivity引用ItemsFragment

我必须在MainActivity工作之前将ItemsFragment更改为Sherlock代码。当您使用寻呼机,标签和片段时,Java似乎在某种程度上“向前看”。