Мои коды такие:
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;
}
У меня есть 4 вкладки в TabHost: tab1, tab2, tab3, tab4, когда пользователь выйдет из системы, я удалю tab3 и tab4, поэтому я вызываю removeTabForLogout(), очищаю все вкладки в tabHost и повторно добавляю tab1 и tab2.
В android 1.5 и android 1.6, если текущая выбранная вкладка - tab1, когда я вызываю removeTabForLogout, возникает исключение в tabHost.addTab(getTab1()):
ОШИБКА/AndroidRuntime (205): java.lang.IllegalStateException: View 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. Кто-нибудь может мне помочь? Большое спасибо!