Возможно, вам придется реализовать onBackPressed в ActivityGroup для правильной обработки истории, но это зависит от проекта.

я есть приложение, которое может создавать вкладки динамически. И когда я создаю вкладку, я начинаю деятельность как намерение. Вот так:

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

Довольно стандартный. И это прекрасно работает. Теперь предположим, что у меня есть кнопка (или пункт меню, что угодно) в действии, которое я создал внутри своей вкладки. Когда пользователь нажимает эту кнопку, я хочу, чтобы действие и вкладка, в которой он находится, были удалены и уничтожены.

Я не могу найти простой способ сделать это. Я нашел функцию TabHost.clearAllTabs (), но она уничтожает все вкладки и действия, я просто хочу удалить одну.

Кто-то предложил мне сохранить список всех открытых вкладок, а затем вызвать clearAllTabs (), после чего я воссоздаю все остальные вкладки, кроме той, которая мне не нужна.

Что-то вроде этого:

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

Я добавляю эту строку в мою функцию addTab (), чтобы каждая созданная мной вкладка запоминалась в моем ArrayList:

list.add(spec);

И затем, когда я хочу удалить свою вкладку, я запускаю эту функцию:

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

Это удаляет мою вкладку из моего ArrayList, удаляет все вкладки, а затем воссоздает все оставшиеся вкладки, используя мой ArrayList. Теоретически это должно работать, но я получаю следующую ошибку при попытке вызвать эту функцию:

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)

По какой-то причине при добавлении вкладки она пытается установить текущую вкладку и попадает в исключение нулевого указателя.

Если бы вы, ребята, могли предложить другой способ достижения того, что я хочу сделать, или способ исправить мой текущий метод, я был бы признателен.