Android TabHost только с выбранной вкладкой в ​​стеке

У меня есть TabHost с 4 вкладками. Мне нужно, чтобы в стеке была доступна только выбранная активность вкладки. Когда пользователь меняет вкладку, как завершить действие на предыдущей вкладке. Я попробовал следующий код. Здесь показан код для первой вкладки. Аналогично для остальных вкладок:

spec = tabHost.newTabSpec("tab1").setIndicator("Tab1", 
            res.getDrawable(R.drawable.ic_tab_tab1))
                    .setContent(new Intent(this, Tab1.class)
                    .addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_TOP));

Но приведенный выше код удаляет действие Tab1 в стеке/куче только тогда, когда пользователь снова переходит на эту вкладку, но не когда пользователь переходит на новую вкладку.


person Pavan    schedule 11.02.2011    source источник


Ответы (1)


Я посмотрел на это, какова ваша причина для этого? Как узнать, что в стеке? Вы зависите от onDestroy() или чего-то еще?

У меня нет полного ответа, но вы можете видеть, какая вкладка активна:

Пусть ваш класс реализует OnTabChangeListener

 public class YourClass extends TabActivity  implements OnTabChangeListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
// Load all your normal objects as well as TabHost

// make your tabhost listen for tab changes
mTabHost.setOnTabChangedListener(this);
}

 @Override
public void onTabChanged(String tabId) {

   int currentTabNumber = mTabHost.getCurrentTab();
    for(int i=0;i<mTabHost.getTabWidget().getChildCount();i++)
    {
        if(i != currentTabNumber){
            System.out.println("I'm not a currently active tab");
        }           
    }

}

 }
person Blundell    schedule 11.02.2011
comment
У меня есть основная вкладка, в которой я создал 4 вкладки, каждая из которых является действием. В каждом действии я поместил журналы входа и выхода в onCreate и onStop соответственно. Благодаря этому я узнал, что когда я устанавливаю для текущей вкладки по умолчанию значение 1, вводится первое действие. Опять же, когда пользователь меняет вкладку на 2,3 или 4, соответствующее действие запускается без какого-либо оператора выхода, видимого в первом действии. Когда снова нажимается 1-я вкладка, теперь первое действие завершается и перезапускается заново. - person Pavan; 12.02.2011
comment
Если вы хотите также видеть, когда вкладка выходит, просто переопределите и используйте onPause(); :-) - person Blundell; 12.02.2011
comment
переопределение onPause или onDestroy не работает в дочерней активности. Должен ли быть флаг для реализации этого? - person Tuna Karakasoglu; 24.08.2012