看来,将代码中引用附加和分离的几个位置替换为添加和删除将允许代码在 API 级别 13 之前的环境中正常运行。
public TabListener(Activity activity, String tag, Class<T> clz, Bundle args) {
mActivity = activity;
mTag = tag;
mClass = clz;
mArgs = args;
// Check to see if we already have a fragment for this tab, probably
// from a previously saved state. If so, deactivate it, because our
// initial state is that a tab isn't shown.
mFragment = mActivity.getFragmentManager().findFragmentByTag(mTag);
if (mFragment != null) { // && !mFragment.isDetached()) {
FragmentTransaction ft = mActivity.getFragmentManager().beginTransaction();
//ft.detach(mFragment);
ft.remove(mFragment);
ft.commit();
}
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
//if (mFragment == null) {
mFragment = Fragment.instantiate(mActivity, mClass.getName(), mArgs);
ft.add(android.R.id.content, mFragment, mTag);
//} else {
// ft.attach(mFragment);
//}
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
if (mFragment != null) {
//ft.detach(mFragment); //requires API 13
ft.remove(mFragment); //this does not do the same thing as detach
}
}