【问题标题】:Android TabHost with only selected tab on stackAndroid TabHost,堆栈上只有选定的选项卡
【发布时间】:2011-02-12 05:20:53
【问题描述】:

我有一个带有 4 个标签的 TabHost。我只需要选定的选项卡活动在堆栈上可用。当用户更改选项卡时,如何完成上一个选项卡下的活动。我尝试了以下代码。这里显示第一个选项卡的代码。其余选项卡类似:

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 活动,而不是当用户更改为新选项卡时。​​p>

【问题讨论】:

    标签: android android-tabhost


    【解决方案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");
            }           
        }
    
    }
    
     }
    

    【讨论】:

    • 我有主选项卡活动,我在其中创建了 4 个选项卡,每个选项卡都是一个活动。在每个活动中,我分别在 onCreate 和 onStop 中输入和退出日志。通过这个我才知道,当我将默认的当前选项卡设置为 1 时,进入了第一个活动。同样,当用户将选项卡更改为 2,3 或 4 时,相应的活动将启动,而不会在第一个活动上看到任何退出语句。当再次按下第一个选项卡时,现在第一个活动正在完成并重新启动。
    • 如果您也想查看选项卡何时退出,只需覆盖并使用 onPause(); :-)
    • 覆盖 onPause 或 onDestroy 在子活动中不起作用。应该有一个标志来实现这个?
    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 2022-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    相关资源
    最近更新 更多