Мои коды такие:
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;
}
У меня есть 4 вкладки в TabHost: tab1, tab2, tab3, tab4, когда пользователь выйдет из системы, я будуудалите tab3 и tab4, поэтому я вызываю removeTabForLogout (), очищаю все вкладки в tabHost и повторно добавляю tab1 и tab2.
В Android 1.5 и Android 1.6, если текущая выбранная вкладка является tab1, когда я вызываю removeTabForLogout, в 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)
в aitao.mobile.android.actMain.removeTabForLogout (actMain.java:266)
Но removeTabForLogout () работает нормально в Android 2.0 и более поздних версияхверсия.
Я не могу найти какую-либо полезную информацию в Google.Кто-нибудь может мне помочь?Большое спасибо!