我试图让code 这里工作。它编译罚款。它将运行。而且它会加载(3)选项卡1。然而,当我点击第二或第三选项卡上,我得到这样的:
I'm trying to get the code here to work. It compiles fine. It will run. And it will load tab 1 (of 3). However, when I click on the 2nd or 3rd tab, I get this:
java.lang.NoSuchMethodError:android.app.FragmentTransaction.detach
java.lang.NoSuchMethodError: android.app.FragmentTransaction.detach
这发生在code此处
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
if (mFragment != null) {
//ft.detach(mFragment); //requires API Level 13
ft.remove(mFragment); //this does not do the same thing as detach
}
}
我发现,分离是仅适用于API级别13.我试过删除,但它不会做同样的事情,效果显着。有没有人有关于如何基于code在第一个链接?
I found that detach is only available to API Level 13. I tried remove, but it doesn't do the same thing, obviously. Does anyone have any ideas about how to overcome this based on the code in the first link?
编辑: 我想这同样适用附加因为这也是在code,但没有得到应用程序崩溃之前打了。
I guess the same goes for attach as that's also in the code, but doesn't get hit before the app crashes.
看来,更换几个地方在code引用连接和分离有添加和删除将使code在正常一个pre-API级别13环境。
It appears that replacing the several places in the code that reference attach and detach with add and remove will allow the code to function normally in a pre-API Level 13 environment.
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
}
}
上一篇:OnSelectionChanged事件为Windows 8图表控件在现代的UI图表图表、控件、事件、现代
下一篇:IBM工作灯 - 客户端API&QUOT; overrideBackButton&QUOT;不工作的第二次客户端、工作灯、工作、IBM