2010-08-18 85 views
5

對不起,我知道這個話題已經被覆蓋了一下。我已閱讀相關帖子,但仍有點困惑。我正在開發一款應用程序,雖然原型將有三個主屏幕,但最終會有幾十個。每個屏幕將呈現改變狀態或採取用戶輸入。爲了可視化,需要對其進行佈局,類似於MS Word或典型的PC。它的頂部有一個狀態欄,底部有一個導航欄,這對所有屏幕來說都很常見(中間是一些屏幕的細微調整,就像不同的圖標一樣),這就是我稱之爲需要更新的視圖窗格適用的佈局。Android活動與視圖

狀態,導航欄和每個屏幕都在其自己的佈局xml文件中定義。對於我的第一個噱頭,我只使用了一個ViewFlipper並將3個屏幕布局加載到它中。然而,這意味着目前我有一個主要的活動,因爲我繼續添加屏幕,這將不可維護。

  1. 我感覺我覺得每個屏幕布局都應該有一個關聯的Activity類,它可以理解如何控制該屏幕。我需要弄清楚如何將它加載到中心窗格動態。不過,我想我在另一篇文章中讀到,使用多個活動可能是一個CPU和內存泄漏。
  2. 目前我嘗試製作其中一個屏幕它是自己的Activity,並通過創建一個Intent而不是調用startActivity從主Activity中踢掉它。但是,這會導致新的屏幕「活動」駐留在主「活動」的頂部。有趣的是,然後按下後退按鈕駁回了該活動並將我返回到主界面。
  3. 到目前爲止,我還沒有想出如何設置具有不同的活動控制中心窗格中發生了什麼。
  4. 如果我繼續執行多個Activity路徑,我的主Activity是否應該從ActivityGroup繼承?
  5. 在這種情況下是否使用更適用的View類?

我知道這是一篇很長的文章。我會很感激任何建議。 謝謝! CB

回答

3

正如您所注意到的,Android會隱式追蹤任務中已啓動活動的堆棧,並且「後退」按鈕結束最上面的一個,重新激活下一個。我建議你考慮用戶可能期望後退按鈕所做的事情,並使其沿着這些行分開。

我還沒有玩過ActivityGroup,所以我不能在那裏給你提供建議。如果你完全獨立的活動,你可以讓他們都使用相同的「外殼」內容視圖與常見的導航/狀態欄。有一個超類或實用程序類來處理填充和管理。然後使用一個LayoutInflater(您可以撥打電話getLayoutInflater())以填寫特定於活動的視圖。

如果您希望其中一個活動具有多個屏幕,則最終可能會在中央插槽中放置ViewFlipper。同樣,您希望在用戶希望能夠「返回」的任何地方進行活動轉換;這也意味着您可能不希望在屏幕密切相關或邏輯相同的情況下進行更改。 (您可以覆蓋後退按鈕的行爲,但除非您有充分的理由,否則最好只安排應用程序,以便Android的基本設置可以幫助您的應用程序的用戶界面,而不是用於交叉目的。)

+0

感謝您的輸入,我工作的方法是讓我的主要活動爲用戶提供初始屏幕(A,B或C,各自各自的活動)的顯示選擇。主要通過startActivityForResult完成。用戶可以通過點擊/滑動選擇左/右來查看新的屏幕。但是我對我正在做的破解實施並不滿意。活動調用onFinish自己返回到main並將用戶選擇向左/向右傳回,並主要啓動適用的活動。當然現在後面不會像我想要的那樣工作。建議? – bursk 2010-08-21 15:34:51

+0

你想如何回去工作? – 2010-08-21 16:03:10

+0

猜測我錯誤地描述了最後一部分,按照當前實現點擊後退按鈕將使用戶回到主屏幕,他們選擇A,B或C來顯示。但是,如果用戶在A上並滑動以查看B,我認爲期望可能是當他們回擊時他們回到A,而不是主要。不過,我也不想陷入這樣一種情況:他們已經導航到了很多地方,然後在退出之前需要一遍又一遍地點擊。我傾向於在我的main中保留一個ArrayList的Activities,然後嘗試自己處理它。 – bursk 2010-08-21 17:57:07

1

如果您想要以您所談論的方式使用活動,您可以使用選項卡活動進行研究。它實際上以您想要的方式工作,您只需要隱藏選項卡小部件並將導航欄放在那裏。或者,如果你有更多時間,你可以深入一點,讓你自己擁有像Walter一樣的類似標籤的ActivityGroup。

+0

別忘了 - 現在,ActivityGroup已棄用。 – alshapton 2013-03-20 11:10:18

1

您可以使用帶有片段的視圖尋呼機來完成不同視圖之間的翻轉,但仍然允許您的活動完全控制它。活動可以控制菜單,而片段控制您的查看區域。這樣您的後退按鈕將正確地關閉包含與活動相關的所有頁面的活動,而不是沿着堆棧走。