我正在转换 Android 4.x 代码以使用 ActionBarSherlock,以便我们的应用程序可以与 Gingerbread 兼容。
到目前为止一切顺利,但它无法启动片段的新实例。
我的 MainActivity 扩展了SherlockFragmentActivity
implements ActionBar.TabListener
。
代码在 case 为 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
它在“名称”中和“名称”中显示“这个”android.app.ActionBar$TabListener
我想这与 TabListener 或未正确包含/加载的库有关?我已经清理了项目。
片段 ProjectsFragment 扩展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;
}