Eliminar una pestaña y la actividad (intención) dentro de ella desde un TabHost

Tengo una aplicación que puede crear pestañas dinámicamente. Y cuando creo una pestaña, inicio una actividad como una intención. Al igual que

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);
}

Bonito estándar. Y funciona muy bien. Ahora, suponga que tengo un botón (o elemento de menú, lo que sea) en la actividad que ejecuté dentro de mi pestaña. Cuando el usuario presiona este botón, quiero que la actividad y la pestaña en la que se encuentra se eliminen y destruyan.

Parece que no puedo encontrar una manera simple de hacer esto. He encontrado la función TabHost.clearAllTabs (), pero esto destruye todas las pestañas y actividades, solo quiero eliminar una.

Alguien sugirió que guarde una lista de todas las pestañas que he abierto, y luego llame a clearAllTabs (), después de lo cual recreé todas mis otras pestañas excepto la que no quiero.

Algo como esto

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

Agrego esta línea a mi función addTab () para que cada pestaña que creo se recuerde en mi ArrayList:

list.add(spec);

Y luego, cuando quiero eliminar mi pestaña, ejecuto esta función:

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);
}

Esto elimina mi pestaña de mi ArrayList, elimina todas las pestañas, luego recrea todas las pestañas restantes usando mi ArrayList. En teoría debería funcionar, pero obtengo el siguiente error cuando intento llamar a esta función:

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)

Por alguna razón, al agregar una pestaña, intenta establecer la pestaña actual y encuentra una excepción de puntero nulo.

Si pudieran sugerirme otra forma de lograr lo que quiero hacer, o una forma de arreglar mi método actual, les agradecería.

Respuestas a la pregunta(2)

Su respuesta a la pregunta