【问题标题】:How can we set id as a number for UI Elements?我们如何将 id 设置为 UI 元素的数字?
【发布时间】:2014-11-16 04:54:58
【问题描述】:

我对两者都非常感兴趣和困惑。有时,我正在从事一个已经由某人实施的项目。在处理完之后,我发现他正在使用唯一编号来查找其 UI 元素的 ID。就像如果我们需要找到 TextView 的 id 然后我们写,

 TextView textview = (TextView)findViewById(R.id.text);

但在那个代码中,

 TextView textview = (TextView)findViewById(012345678);

类似这样的东西。我在项目中搜索了很多也试图找到那个号码,但我找不到。在R.java 文件中我也检查过,但也没有。它的唯一 ID 像往常一样自动生成,但我在整个项目中找不到数字。

所以我的问题是我们如何才能这样使用?这可能吗??

TextView textview = (TextView)findViewById(012345678);

如果这是可能的,那么我们可以在哪里定义该 ID 号并将其用于 UI 元素。

我们将不胜感激!

【问题讨论】:

  • 你试过寻找十六进制吗?
  • 是的。但我无法弄清楚,因为我已经检查了整个项目,但我根本找不到任何东西
  • 我猜他只是在使用取出的值R.java。我将这种技术评估为非常差并且明确不建议。使用经典方式要好得多:按名称
  • @FrankN.Stein 不,我也检查了 R.java 文件,它的 id 不同。
  • 所以他可能是通过setId() 手动分配ID 的手动(太糟糕了!!)。 这样做的唯一原因是控件是以编程方式创建的。 + 以编程方式创建控件的唯一原因是您没有其他机会

标签: android findviewbyid


【解决方案1】:

从文件夹 gen 你可以找到 R.java 有一个名为 id 的类,就像在图像中一样。

例如

public static final int action_bar=0x7f06001c;

所以我可以使用 0x7f06001c 代替 R.id.action_bar。

【讨论】:

  • 你的回答是废话。当您编辑任何资源时,该文件将被覆盖。文件顶部还有一条警告:AUTO-GENERATED FILE。不要修改。这个类是由 aapt 工具从它找到的资源数据中自动生成的。不应手动修改。
  • 我知道编辑自动生成的文件会出错。在我的回答中,我没有告诉编辑自动生成的文件。我解释了如何获取整数 id。你误解了我@rekire
  • 我并不孤单,这确实是可能的,但不是一个好主意。
  • 是的,这很难处理@rekire
【解决方案2】:

这并不像您想象的那样直接可行。您可以定义自己的自定义 id,这些 id 不会在任何 xml 文件中使用。我认为这就是你想要的。为此,请在 res/values/ids.xml 中创建一个包含以下内容的新 xml 文件:

<resources>
    <item name="your_custom_id" type="id"/>
</resources>

您可以将其用作R.id.your_custom_id,我认为这就是您想要的。

【讨论】:

  • 所以对于类型,我可以写 012345678 吗??
  • 我认为这应该在 res/values/ids.xml stackoverflow.com/a/3217786/3049917
  • 好吧,这不会错,但是文件名并不真正关心 AFIK。最后,所有值 xml 文件都合并到一个文件中,但你是对的,所以我会更新我的答案。 @PG_Android 不,这是构建工具的硬编码标记。
  • @rekire 我试过了,但是它在 r.java 文件中给出了一个错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-17
  • 1970-01-01
  • 2013-05-31
  • 2013-10-06
相关资源
最近更新 更多