2011-05-01 229 views
10

我已將OnCreate()上的所有UI事件綁定代碼。它使我的OnCreate()巨大。處理UI事件的最佳做法

在android中實現UI事件是否存在模式?我可以在View xml文件中添加方法,然後我可以將所有的處理程序代碼放在其他地方。

簡而言之,我想我在問如何用android應用程序代碼實現MVVM模式?

+0

如果你們認爲MVVM模式,我問的是2不同的事情,那麼讓我知道我會更新我的問題。 – Gainster 2011-05-01 21:11:03

+0

+1;這更像是一個Java /事件驅動的編程問題。祝你好運! :) – 2011-05-01 21:11:18

+0

MVVM框架:http://code.google.com/p/android-binding/ – xandy 2012-04-27 09:22:08

回答

5

的東西,我做的:

  1. 將所有的onClick功能的XML。避免Java代碼中的混亂。
  2. 將事件偵聽器初始化爲活動類的成員,而不是將它們保留在函數中。我的代碼中不太喜歡花括號。混淆了我的地獄。
  3. 如果我的列表適配器變得太大,我將它們保存在一個單獨的類中,而不是作爲活動類的成員,然後將所有視圖偵聽器保留在適配器中。
  4. 爲了避免產生過多的onClick功能有時我保留一個功能類似onNavigatonClick然後用view.getId(),看看哪個按鈕被點擊。由於未檢查XML是否存在有效的函數調用,因此如果函數名稱錯誤,則會導致運行時錯誤。
  5. 如果一個特定的視圖需要大量的UI交互代碼,我使用GestureDetector創建一個自定義視圖來處理UI交互。

我想這仍然是非常基本的,因爲我還沒有太多的Java經驗。

5

在1.6和更高版本中,您可以指定onClick方法in your layout XML file來修剪一些脂肪。我通常只是把它全部隱藏在一個initUi()方法中,我有我的onCreate方法調用。這樣至少onCreate更容易閱讀。

+0

你可以在下面的鏈接找到代碼http://stackoverflow.com/questions/5848207/binding-events-on-在OnCreate – Gainster 2011-05-01 21:18:48

0

onCreate通常是調用setContentView並設置偵聽器的最佳位置,但用於處理用戶交互的代碼通常在onClick,onTouch,onKey等例程中。

也許如果你發佈你的代碼,我們可以看到你做了什麼?

1

很多很好的答案已經。 :)

如果您使用的是Android 1.6或更高版本,則可能會發現新的fragments API有助於將您的活動組織和分區爲多個邏輯單元。