我有一个包含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
}
答案 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()
方法中包含相同的选项卡并再次执行相同的操作,否则再次单击此选项卡时将不会获得任何内容。