【问题标题】:How to create a reusable piece of code in Android?如何在 Android 中创建一段可重用的代码?
【发布时间】:2013-10-03 15:01:45
【问题描述】:

我正在编写一个 Android 应用程序,其中有一段代码,它为用户创建了一种插入金额的方法。它包括根据位置设置货币符号和小数点,以及当用户点击点或逗号时将焦点从整数文本框跳转到小数文本框。

由于我想在我们的应用程序的多个位置重新创建这段代码,我想将它与视图的其余部分分开。因此,我创建了一个单独的 xml 文件并将其填充到一个单独的 java 文件中,在该文件中我保留了设置货币等的方法。然后我将其“导入”到这样的 xml 文件中:

<com.example.android.ui.widget.AmountWidget 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
</com.example.android.ui.widget.AmountWidget>

当我需要在一页中多次使用此代码时,就会出现问题。由于 TextEdit 框有一个 id,如果我多次使用这段代码,这个 id 会被重用,它实际上变得无效。

所以我的问题就变成了;如何在每次调用这段代码时都可以为它设置 id 的方式重用一段代码?

【问题讨论】:

  • 您是否在代码中添加了包含技术?如果是的话怎么样?

标签: java android xml code-reuse


【解决方案1】:

在您的 xml 代码上使用 &lt;include/&gt;。这里有一个official example

编辑

This link 提供更多信息,以覆盖所包含布局的 id。

编辑 2

在您的最后评论之后,即使我不知道您项目的完整结构,我的想法是:您可以在 XML 文件上覆盖 Layoutid,并在代码中检查EditText 的父级,带有开关盒。

...
<include layout="@layout/your_layout"
         android:id="@id/layout1"/>
<include layout="@layout/your_layout"
         android:id="@id/layout2"/>
<include layout="@layout/your_layout"
         android:id="@id/layout3"/>
...
<include layout="@layout/your_layout"
         android:id="@id/layoutX"/>
...

然后在你的代码中,在你指向 EditText 之后使用 case/switch。

顺便说一句,如果你只有几行,你可以避免使用 include;相反,如果您有很多行,请使用 ListView

【讨论】:

  • 感谢您的提示。不过,我有两个问题。 1)我看到我可以覆盖 id,但据我所知,我只能覆盖您包含的部分的 id,而不是包含在您包含的部分中的各个 EditText 框。和问题2)如果我包含xml,它是否还包含随之而来的java代码(例如设置货币符号)?
  • 还有一件事:Fragments 怎么样,在这种情况下会是一个更好的主意吗(没有任何 Fragment 经验)?
  • @kramer65 1) 当你使用 include 时,布局的所有内容都包含在内; 2) 不,Java 代码当然是多种多样的,因为由您来管理类中的布局;您对 xml 文件所做的所有配置当然都是导入的; FRAGMENT)您可以在 Fragment 上使用 include,但您不必在布局中包含 Fragment xml,这不是必需的!
  • 好的,谢谢。但我的主要问题;如何覆盖 xml 的 id,以便我可以在一页内多次使用相同的 xml,并且仍然可以通过 id 区分它们。
  • @kramer65 我们离答案如此之近,请检查:developer.android.com/guide/topics/resources/…
猜你喜欢
  • 2018-05-17
  • 1970-01-01
  • 2019-02-27
  • 2019-07-31
  • 2018-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多