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