Removendo uma guia e a atividade (intenção) dentro dela de um TabHost

Tenho um aplicativo que pode criar guias dinamicamente. E quando crio uma guia, inicio uma atividade como uma intenção. Igual a

private void addTab(Context packageContext, Class<?> newClass, TabHost mTabHost, String tabId, String tabLabel){
    // newClass is my Activity class that I want to start in the tab
    Intent intent = new Intent().setClass(packageContext, newClass);
    TabHost.TabSpec spec;
    spec = mTabHost.newTabSpec(tabId).setIndicator(tabLabel)
                  .setContent(intent);
    mTabHost.addTab(spec);
    mTabHost.setCurrentTabByTag(tabId);
}

Pretty standard. E funciona muito bem. Agora, suponha que eu tenha um botão (ou menu, seja qual for) na atividade que instanciei dentro da minha guia. Quando o usuário pressiona esse botão, desejo que a atividade e a guia dentro dela sejam removidas e destruída

Não consigo encontrar uma maneira simples de fazer isso. Encontrei a função TabHost.clearAllTabs (), mas isso destrói todas as guias e atividades, só quero remover um

lguém sugeriu que eu salve uma lista de todas as guias que abri e depois chamei clearAllTabs (), depois da qual recriar todas as minhas outras guias, exceto a que eu não quer

Algo assim

public static ArrayList<TabHost.TabSpec> list = new ArrayList<TabHost.TabSpec>();

Eu adiciono esta linha à minha função addTab () para que todas as guias que eu crie sejam lembradas na minha ArrayList:

list.add(spec);

E então, quando quero remover minha guia, executo esta função:

public static void removeTab(){
    list.remove(list.size()-1); // remove it from memory
    mTabHost.clearAllTabs();  // clear all tabs from the tabhost
    for(TabHost.TabSpec spec : list) // add all that you remember back
        mTabHost.addTab(spec);
}

Isto remove minha guia da minha ArrayList, remove todas as guias e recria todas as guias restantes usando o meu ArrayList. Em teoria, ele deve funcionar, mas recebo o seguinte erro ao tentar chamar esta função:

FATAL EXCEPTION: main
java.lang.NullPointerException
at android.widget.TabWidget.setCurrentTab(TabWidget.java:342)
at android.widget.TabWidget.focusCurrentTab(TabWidget.java:366)
at android.widget.TabHost.setCurrentTab(TabHost.java:323)
at android.widget.TabHost.addTab(TabHost.java:216)
at com.example.myapp.TabManager.removeTab(QuikBrowser.java:86)
at com.example.myapp.TabManager.TabWindow.onOptionsItemSelected(TabWindow.java:91)
at android.app.Activity.onMenuItemSelected(Activity.java:2205)

or algum motivo, ao adicionar uma guia, ele tenta definir a guia atual e atinge uma exceção de ponteiro nul

Se vocês puderem sugerir outra maneira de alcançar o que eu quero fazer ou uma maneira de corrigir meu método atual, eu apreciari

questionAnswers(2)

yourAnswerToTheQuestion