我的代码是这样的:
public void removeTabForLogout(){
if (tabHost.getTabWidget().getChildCount()==4){
tabHost.setCurrentTab(0);
tabHost.clearAllTabs();
tabHost.addTab(getTab1());
tabHost.addTab(getTab2());
}
}
私人TabSpec getTab1(){
if (mTab1==null){
mTab1= tabHost.newTabSpec("tab1")
.setIndicator(...).setContent(intentForTab1);
}
return mTab1;
}
私人TabSpec getTab2(){
if (mTab1==null){
mTab1= tabHost.newTabSpec("tab2")
.setIndicator(...).setContent(intentForTab2);
}
return mTab2;
}
我在TabHost中有4个标签:tab1,tab2,tab3,tab4,当用户注销时我将删除tab3和tab4,所以我调用removeTabForLogout(),清除tabHost中的所有标签并重新添加tab1和tab2。
在android 1.5和android 1.6中,如果当我调用removeTabForLogout时当前选中的选项卡是tab1,则tabHost.addTab(getTab1())会抛出异常:
ERROR / AndroidRuntime(205):java.lang.IllegalStateException:查看com.android.internal.policy.impl.PhoneWindow$DecorView@437aba18已添加到窗口管理器中。
在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:125)
........
在android.widget.TabHost.setCurrentTab(TabHost.java:320)
在android.widget.TabHost.addTab(TabHost.java:210)
at aitao.mobile.android.actMain.removeTabForLogout(actMain.java:266)
但是removeTabForLogout()在android 2.0及更高版本中运行良好。
我在Google上找不到任何有用的信息。有人可以帮助我吗?非常感谢!
答案 0 :(得分:0)
如果没有看到堆栈跟踪引用的行作为您的问题,则很难回答。在TabHost.java阅读错误:320& TabHost.java:210然而它告诉我你的代码在第266行的类“actMain”中你的代码导致你的错误。我会考虑回顾这一行。
此外,如果你在删除它时看着标签1,只是为了恢复它...你不能只留下标签1和标签2而不是在删除后立即重新创建它们吗?