当我使用ViewFlipper单击我的Android应用程序中的选项卡时,我正在尝试动画视图更改,但问题是使用setContent添加到TabSpec的视图无法再添加到ViewFlipper或抛出此异常:< / p>
03-03 19:12:19.082: ERROR/AndroidRuntime(229): Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
我如何添加标签
private ArrayList<View> tabViews = new ArrayList<View>();
private ViewFlipper flipper;
....
View tabView = contentFactory.createTabContent("tab_" + labelId);
tabViews.add(tabView);
mTabHost.getTabContentView().addView(tabView);
spec.setIndicator(tabIndicator);
spec.setContent(tabView.getId());
mTabHost.addTab(spec)
以后
for (View tabView : tabViews) {
flipper.addView(tabView);
}
只有当您点击标签时,我才会瞄准像http://www.youtube.com/watch?v=SZTiJmclaRc这样的效果。我打算使用onTabChanged事件来提交文件
ViewFlipper.setDisplayChild(flipperViewIndexDerivedFromTabIndex)
感谢您的帮助。
答案 0 :(得分:1)
没有任何丑陋的ArrayList黑客就可以使用它。关键是将我的布局xml中tabcontent的View类型从FrameLayout更改为ViewFlipper。
我现在可以将标签内容作为TabContentFactory对象传递给
spec.setContent(contentFactory);
并通过
访问onTabChanged方法中的ViewFlipperViewFlipper flipper = (ViewFlipper) getTabHost().getTabContentView();
之后,它只是实现逻辑来选择要翻转的视图。启示录来自浏览SO上的其他Android标记问题!