Закрытие/перезапуск действий в TabHost

Я разрабатываю приложение для Android 2.3.3, состоящее из TabActivity верхнего уровня. Я также программно добавляю несколько вкладок в TabHost и даю каждой из них отдельную дочернюю активность:

intent = new Intent().setClass(this, MyFirstActivity.class);
spec = tabHost.newTabSpec(...).setIndicator(...).setContent(intent);
tabHost.addTab(spec);

intent = new Intent().setClass(this, MySecondActivity.class);
spec = tabHost.newTabSpec(...).setIndicator(...).setContent(intent);
tabHost.addTab(spec);

Событие происходит в другом месте моего приложения, и в ответ я хочу воссоздать все действия на вкладках. Для этого я вызываю getTabHost().clearAllTabs(), и хотя он удаляет их с вкладки, на самом деле он не убивает активность. Если я снова запущу приведенный выше код, существующие действия просто вернутся на свои вкладки и продолжат работать, как и раньше.

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


person Mark Feldman    schedule 01.03.2012    source источник


Ответы (1)


Вы можете перезапустить действие, установив флаг. Код приведен ниже.

    spec = tabHost  .newTabSpec("tab1")
                    .setIndicator("FirstActivity")
                    .setContent(new Intent(this,MyFirstActivity.class)
                    .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
    tabHost.addTab(spec);
person Dharmendra Barad    schedule 01.03.2012
comment
Спасибо Раджу. Я действительно видел этот флаг в документах, но совершенно неправильно понял, для чего он нужен; по какой-то причине я думал, что он очистил весь стек активности. Спасибо за помощь! - person Mark Feldman; 02.03.2012