初始化应用程序时如何初始化选项卡内容

时间:2011-07-21 15:04:48

标签: java android android-tabhost

我有一个包含2个标签的应用。每个选项卡都加载一个xml文件(相当大,可能是400项rss文件)。

默认情况下,选项卡在单击之前不会获取xml。我只是想在首次打开应用程序时加载所有内容。

以下是主要观点:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Resources res = getResources(); // Resource object to get Drawables
    TabHost tabHost = getTabHost();  // The activity TabHost
    TabHost.TabSpec spec;  // Resusable TabSpec for each tab
    Intent intent;  // Reusable Intent for each tab

    // Audio Feed
    intent = new Intent().setClass(this, AudioFeed.class);
    spec = tabHost.newTabSpec("audio").setIndicator("",
                      res.getDrawable(R.drawable.ic_tab_audio))
                  .setContent(intent);
    tabHost.addTab(spec);


    // Video Feed
    intent = new Intent().setClass(this, VideoFeed.class);
    spec = tabHost.newTabSpec("video").setIndicator("",
                      res.getDrawable(R.drawable.ic_tab_video))
                  .setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(0); //todo: remember what tab user was last on
}

2 个答案:

答案 0 :(得分:3)

我使用TabHost.setCurrentTab(x)或TabHost.setCurrentTabByTag(x)。

mTabHost.setCurrentTab(1);
mTabHost.setCurrentTab(0);

对于初始化,我使用TabHost.OnTabChangeListener

private OnTabChangeListener mOnTabChangeListener = new OnTabChangeListener() {
    @Override
    public void onTabChanged(String tag) {
        if (FBIntent.EXTRA_XX.equals(tag)) {
            // Current tab is xx.
            ... if xx not init -> ...
        } else if (FBIntent.EXTRA_YY.equals(tag)) {
            // Current tab is yy.
            ...
        }
    }
};

答案 1 :(得分:1)

在同样的方法中,其他标签做了什么。我的意思是当你点击它们时其他人做了什么。所以你对所有标签都有同样的东西。不要忘记在OnTabChanged()方法中包含相同的选项卡并再次执行相同的操作,否则再次单击此选项卡时将不会获​​得任何内容。