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

4

我有一个应用程序,其中有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个回答

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

啊,setCurrentTab 方法的妙用。我使用了它,现在非常完美。谢谢 user802421。 - Darcy

1
在这个同样的方法中,做其他选项卡所做的事情。我的意思是当你点击它们时,其他选项卡会做什么。因此,您需要为所有选项卡提供相同的内容。不要忘记在OnTabChanged()方法中包括这个相同的选项卡,并再次执行相同的操作,否则当再次单击此选项卡时将得到空白。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接