アプリが Gingerbread と互換性を持つように、Android 4.x コードを ActionBarSherlock を使用するように変換しています。
ここまでは順調ですが、フラグメントの新しいインスタンスの起動に失敗します。
私の 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 extends 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;
}