2012-01-01 65 views
3

我想在我的活动中动态设置contentView。 因为有一次我使用xml作为contentView,但在另一个时间我使用自定义视图作为contentView。Android更改setContentView

但是,如何更改contentView?

我读过关于ViewFlipper可以做到这一点,但一个viewFlipper是在一个XML文件中实现。在此ViewFlipper中,您可以添加不同的视图。

但我不知道他们在开始,所以我不能把他们都写在我的XML文件。 你有什么想法吗?

谢谢

+0

你想要做什么?你能更好地解释你希望屏幕显示给用户吗? – 2012-01-01 17:46:57

+0

例如,用户调用一个名为“测试”的Activity,如果用户完成了他可以继续使用的RadioButton,并且现在应该看到带有可拖动元素的视图,那么此测试就存在一个带有RadioButtons的视图,之后,RadioButtons或Dragable Elements再次..我想切换技术上的看法... 我不认为这将是明智的创建一个新的活动,每个视图... – krackmoe 2012-01-01 17:58:50

+1

特德霍普说是完美的。对于您的要求,我建议insead切换您可以在单个XML中显示所有必需的布局,并根据需要显示/隐藏单个布局,例如: - 为单选按钮和可拖动元素提供两种布局。在选择Radiobutton后使第二个布局可见。 – 2012-01-01 18:06:26

回答

9

您可以随时*setContentView,不只是在onCreate。只需在单独的XML文件中定义所需的所有视图,并在切换时传递相关的ID。如果您想要在代码中动态定义新布局,请执行此操作,并呼叫setContentView并传递新布局的根视图。

*从技术上讲,您可以在任何时候在事件线程上执行时调用setContentView。否则,您需要使用Handler来调用它。

+0

如果我再次调用setContentView,在哪种方法中跳转?再次onCreate? – krackmoe 2012-01-01 18:00:46

+3

@krackmoe - 我不明白这个问题。你不会跳到任何地方。该模型是:某些事件发生(例如,用户按下按钮),在您的应用程序中运行一些代码。这段代码决定是时候改变布局了,所以它调用'setContentView'。该框架负责更新显示。您的代码然后回到等待一些新事件发生。 – 2012-01-01 18:05:03