Dynamic remove Tab from TabHost problem on android1.5
My codes like this:
public void removeTabForLogout(){
if (tabHost.getTabWidget().getChildCount()==4){
tabHost.setCurrentTab(0);
tabHost.clearAllTabs();
tabHost.addTab(getTab1());
tabHost.addTab(getTab2());
}
}
private TabSpec getTab1(){
if (mTab1==null){
mTab1= tabHost.newTabSpec("tab1")
.setIndicator(...).setContent(intentForTab1);
}
return mTab1;
}
private TabSpec getTab2(){
if (mTab1==null){
mTab1= tabHost.newTabSpec("tab2")
.setIndicator(...).setContent(intentForTab2);
}
return mTab2;
}
I have 4 tabs in TabHost: tab1, tab2, tab3, tab4 , when user logout i will remove tab3 and tab4, so i call the removeTabForLogout() , clear all tabs in tabHost and re-add the tab1 and tab2.
In android 1.5 and android 1.6, if current selected tab is tab1 when i call removeTabForLogout, there is a exception throw at tabHost.addTab(getTab1()):
ERROR/AndroidRuntime(205): java.lang.IllegalStateException: View com.android.internal.policy.impl.PhoneWindow$DecorView@437aba18 has already been added to the window manager.
at android.view.WindowManagerImpl.addView(Win开发者_高级运维dowManagerImpl.java:125)
........
at android.widget.TabHost.setCurrentTab(TabHost.java:320)
at android.widget.TabHost.addTab(TabHost.java:210)
at aitao.mobile.android.actMain.removeTabForLogout(actMain.java:266)
But removeTabForLogout() works fine in android 2.0 and later version.
I can't find any usefull information on Google. Does any one can help me? Thanks very much!
Without seeing the lines the stack trace quotes as your issues it's difficult to answer. In the errors reading at TabHost.java:320 & TabHost.java:210 however it tells me that your code in Class "actMain" in line 266 your code is causing your error. I would consider reviewing that line.
Also if you are looking at Tab 1 when you remove it, just to reinstate it... couldn't you just leave Tab 1 and Tab 2 and not recreate them right after removing?
精彩评论