我正在转换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
答案 0 :(得分:0)
事实证明,尽管MainActivity没有引用ActivityY,但事实上ActivityY没有SherlockFragment代码使其失败。用不同的方式描述:
MainActitivy使用ProjectsFragment作为列表 当您单击ProjectsFragment中的列表时,它会调用ListsActivity ListsActivity引用ItemsFragment
我必须在MainActivity工作之前将ItemsFragment更改为Sherlock代码。当您使用寻呼机,标签和片段时,Java似乎在某种程度上“向前看”。