处理UI事件的最佳实践

10

我把所有与 UI 事件有关的绑定代码都放在了 OnCreate() 方法中,导致我的 OnCreate() 方法变得非常庞大。

在 Android 中,有没有关于实现 UI 事件的模式?我能否在 View xml 文件中添加方法,然后在其他地方放置所有处理程序代码。

简而言之,我认为我正在问如何在 Android 应用程序代码中实现 MVVM 模式?


如果你们认为MVVM模式和我提出的问题是两回事,请告诉我,我会更新我的问题。 - Gainster
+1;这更像是一个Java/事件驱动编程的问题。祝你好运! :) - Zian Choy
MVVM框架:http://code.google.com/p/android-binding/ - xandy
4个回答

5

从1.6版本开始,您可以在布局XML文件中指定onClick方法来减少代码量。我通常会将它们全部隐藏在一个名为initUi()的方法中,并让onCreate方法调用它。这样,至少onCreate方法更易读。


您可以在以下链接中找到代码:http://stackoverflow.com/questions/5848207/binding-events-on-oncreate - Gainster

5

我所做的事情:

  1. 在XML中保留所有的onClick函数,避免Java代码中出现大量混乱。
  2. 将事件监听器作为活动类的成员进行初始化,而不是将它们保存在一个函数中。我不喜欢在我的代码中有太多花括号,这会让我感到困惑。
  3. 如果我的列表适配器过于庞大,我会将它们保存在一个单独的类中,而不是作为活动类的成员,然后将所有视图监听器都保存在适配器中。
  4. 为了避免创建过多的onClick函数,有时我会保留一个函数,例如onNavigatonClick,然后使用view.getId()来查看哪个按钮被点击了。由于XML没有检查有效的函数调用,如果您的函数名称错误,它会导致运行时错误。
  5. 如果特定的视图需要大量的UI交互代码,我会创建一个自定义视图,并使用GestureDetector处理UI交互。

我想这还算是比较基础的,因为我对Java还没有太多的经验。


1

已经有很多好的答案了。 :)

如果您正在使用 Android 1.6 或更高版本,则可能会发现新的 碎片 API 对于将活动组织和划分为几个逻辑单元非常有用。


0

onCreate通常是调用setContentView和设置监听器的最佳位置,但处理用户交互的代码通常放在onClick、onTouch、onKey等例程中。

也许如果您发布您的代码,我们可以看看您做了什么?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接