Android问题与Tab初始化

我在android上有一个标签视图问题。

我使用4个xml布局文件(每个RelativeLayout)作为选项卡视图中选项卡的内容。

main.xml包含:包含一个包含TabWidget(@android:id / tabs)和FrameLayout(@android:id / tabcontent)的linearLayout的TabHost(@android:id / tabhost)

如果我在main.xml中一个接一个地嵌入多个工作,一切正常......(除了我的main.xml是不可维护的,这是我想通过将文件拆分成简单的main.xml来解决的问题,选项卡和内容框架,然后将视图推送到此...)。

我必须膨胀并将4个RelativeLayout xml文件插入到选项卡内容中的代码如下所示:

mTabHost = getTabHost();

View wv = null;
wv = LayoutInflater.from(this).inflate(R.layout.user_tab, mTabHost.getTabContentView(), true);
mTabHost.addTab(mTabHost.newTabSpec("User").setIndicator("User").setContent(wv.getId()));

wv = LayoutInflater.from(this).inflate(R.layout.track_tab, mTabHost.getTabContentView(), true);
mTabHost.addTab(mTabHost.newTabSpec("Track").setIndicator("Track").setContent(wv.getId()));

wv = LayoutInflater.from(this).inflate(R.layout.chart_tab, mTabHost.getTabContentView(), true);
mTabHost.addTab(mTabHost.newTabSpec("Chart").setIndicator("Chart").setContent(wv.getId()));

/ /等多个选项卡。

当我运行这个第一个选项卡(用户)是空的,其余选项卡包含所有视图的所有内容...因此,tab2具有tab1-4的内容,tab3具有tab1-4的内容,tab4具有内容从tab1-4 ...返回到tab1,它现在具有来自tab1-4的所有内容。

代码工作得很好,视图中各种对象上的事件都很好......只是它们都在视图中混杂在一起......

任何想法是什么导致这一点以及如何纠正?

提前致谢。

吉姆


任何想法是什么导致这一点以及如何纠正?

首先,替换:

setContent(wv.getId())

有:

setContent(wv)

其次,更换:

LayoutInflater.from(this).inflate(R.layout.user_tab, mTabHost.getTabContentView(), true);

有:

getLayoutInflater().inflate(R.layout.user_tab, mTabHost.getTabContentView(), false);

第三个参数中存在false的关键。


好的...找出为什么原来的方法没有工作...并修复了它...也是来自@CommonsWare的一个很好的解决方案(谢谢!)

原始代码的解决方案原来是这样的:

wv = getLayoutInflater().inflate(R.layout.user_tab, mTabHost.getTabContentView(), false);
mTabHost.getTabContentView().addView(wv);
mTabHost.addTab(mTabHost.newTabSpec("User").setIndicator("User").setContent(wv.getId()));

关键点似乎是需要将夸大的视图添加到选项卡内容视图中,但是,传递给setContent的id必须是我刚膨胀的新选项卡视图。

所以,如果我使用true调用inflate,它会将add添加为子视图,但会返回父视图(即tabContent框架)...如果这是我传递给setContent的id,它会将所有对象放入该视图中在屏幕上......我原来的问题。

所以,但使用false调用会创建视图,但会跳过添加到父级,但是很重要的是,它会返回NEW视图。 所以,如果我将这个tabContentView添加到框架:

mTabHost.getTabContentView().addView(wv);

然后在setContent中,将id设置为新视图c的id

宾果:工作

谢谢您的帮助!

链接地址: http://www.djcxy.com/p/41193.html

上一篇: Android issue with Tab initialization

下一篇: List Control SetFocus Redraw Error on a Tab Control