【问题标题】:Dynamic element Id to setId(int) - Android动态元素 ID 到 setId(int) - Android
【发布时间】:2013-02-06 06:32:31
【问题描述】:

我看到了setId(int)findViewByID(int)的语法定义。

但是我们如何使用findViewById(R.id.row1)

我试过用这个:

Object1.setId(Integer.parseInt("repeat"));

它没有显示错误,但也运行了。

怎么了?如果setId(int) 接受int 并将integer 传递给它,那么错误是什么。 When I commented the statement the program runs.

如果findViewById(int) 接受整数,那么R.id.object_id 是整数吗? 如果是,它是如何与findViewById() 映射的? 如果否,那么如何使用findViewByIdsetId

【问题讨论】:

  • 您正在将字符串值解析为整数。它会给你错误 NumberFormatException。您可能一直在使用 try catch 语句并且没有分配 id。现在您正在使用 findview by id 访问元素

标签: java android xml


【解决方案1】:

不建议自己设置对象 id,findViewById 可以访问包含指向 XML 项 id 的指针的 R 类。

当您在 Xml 布局文件中定义 id 时,例如

android:id="@+id/txtyourId"

在编译时编译器在 R 类中创建对您的 XML 项目布局的引用,您可以通过 findViewById 从您的 java 代码中访问它

View YourItem = (View)this.findViewById(R.id.txtyourId);

【讨论】:

  • 好吧,阿拉什我明白了。这意味着,R.id.Object 实际上是 id 的 pointer。所以它是integer。但是如何使用setId()呢?有什么办法可以让我记住我为视图设置的 ID 的名称吗?
  • setId 用于设置已经存在的视图的 ID,以便您以后可以使用 findViewById 再次找到它。您可以像 yourview.setId(i) 一样使用它,其中 i 是一个整数值,但您必须自己记住,您的现有视图具有此 ID。
【解决方案2】:

setId(int) 只能用于扩展 View 类的对象。

【讨论】:

    【解决方案3】:

    您可以将您的 Id 定义为资源,然后使用视图的 setId() 进行设置。

    【讨论】:

      猜你喜欢
      • 2020-05-08
      • 1970-01-01
      • 2021-02-02
      • 2011-06-13
      • 2018-04-05
      • 2019-04-04
      • 2011-11-06
      • 2018-09-10
      • 2012-04-13
      相关资源
      最近更新 更多