我需要以编程方式“按需”创建所有 UI,这意味着我不能使用任何 XML。这是我所做的伪代码:
View v = new MyView();
activity.setContentView(v);
tabHost = new TabHost();
....
tabHost.setup();
TabSpec tabSpec = _tabHost.newTabSpec(page);
tabSpec.setIndicator(title);
tabSpec.setContent((TabContentFactory) this);
activity.setContentView(tabHost);
因此,当调用 TabContentFactory 时,我会返回当前活动的内容视图。基本上我所做的是获取当前视图并将其包装在 tabhost 中。它工作了一半,当我这样做时,我可以看到标签栏,但它下面只有黑色视图,如果我点击其他标签然后点击回来,我可以看到视图,一切都按预期工作。
现在为什么我认为它与 相关setContentView
,因为当我这样做时:
View v = new MyView();
// activity.setContentView(v); // we don't use it as current content view
tabHost = new TabHost();
....
tabHost.setup();
TabSpec tabSpec = _tabHost.newTabSpec(page);
tabSpec.setIndicator(title);
tabSpec.setContent((TabContentFactory) this);
然后一切正常。任何帮助表示赞赏,谢谢!