I am developing an application that uses tabs with each tab being linked to a webpage that the user will be able to see and interact with using webview. What I am having tro
You may use this way: 1- add every tabs to list array 2-to remove a spesific tab, first remove it from list and clear all tabs from tabHost and add them again from list.
check this code which has basic idea of how to delete tabs from tabHost dynamically :
// data structure, what I referred to as memory
ArrayList<TabHost.TabSpec> list = new ArrayList<TabHost.TabSpec>();
// when you are adding tabs to tab host
// what you add, you remember
TabHost.TabSpec spec = tabs.newTabSpec("tag1");
spec.setContent(R.id.button);
spec.setIndicator("TabONe");
tabs.addTab(spec);
list.add(spec);
...
// when you want to remove
list.remove(list.size()-1); // remove it from memory
tabs.clearAllTabs(); // clear all tabs from the tabhost
for(TabHost.TabSpec spec : list) // add all that you remember back
tabs.addTab(spec);
resource: http://www.coderanch.com/t/460859/Android/Mobile/TabHost-Remove-Tab
I hope this will help.
M.
Using code mentioned by Mohammed can be useful, but you may need to add
tabs.setCurrentTab(0);
before calling
tabs.clearAllTabs();
according to issue described at http://code.google.com/p/android/issues/detail?id=2772. Then your tab probably gets removed, but you may notice an error when trying to switch or add tabs. For me, this problem was fixed after calling
tabs.setCurrentTab(index);
inside the for-loop (after adding the tab).
So you should get:
list.remove(nTabToRemoveIndex);
tabs.setCurrentTab(0); // <== ***FIRST EDIT***
tabs.clearAllTabs();
int nTabIndex = 0; // <== ***SECOND EDIT***
for(TabHost.TabSpec spec : list)
{
tabs.addTab(spec);
tabs.setCurrentTab(nTabIndex++); // <== ***THIRD EDIT***
}
Hope it will help.