【问题标题】:best practices for handling UI events处理 UI 事件的最佳实践
【发布时间】:2011-08-16 14:57:20
【问题描述】:

我已将 UI 事件的所有绑定代码放在 OnCreate() 上。它使我的 OnCreate() 变得巨大。

在 android 中实现 UI 事件是否有模式?我可以在 View xml 文件中添加方法,然后我可以将所有处理程序代码放在其他地方。

简而言之,我想我是在问如何使用 android 应用代码实现 MVVM 模式?

【问题讨论】:

  • 如果你们认为 MVVM 模式和我问的是两个不同的事情,那么请告诉我我会更新我的问题。
  • +1;这更像是一个 Java/事件驱动的编程问题。祝你的任务好运! :)

标签: android android-layout event-driven-design


【解决方案1】:

我做的事情:

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

我想这仍然很基础,因为我还没有太多 Java 经验。

【讨论】:

    【解决方案2】:

    在 1.6 及更高版本中,您可以指定 onClick 方法 in your layout XML file 来修剪一些脂肪。我通常只是将它全部隐藏在我调用 onCreate 方法的 initUi() 方法中。这样至少 onCreate 更容易阅读。

    【讨论】:

    【解决方案3】:

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

    如果您使用的是 Android 1.6 或更高版本,您可能会发现新的 fragments API 有助于将您的活动组织和划分为多个逻辑单元。

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 2017-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-12
        • 2021-12-23
        • 1970-01-01
        • 2013-08-25
        • 2014-09-04
        相关资源
        最近更新 更多