2012-01-01 68 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