【问题标题】:Android view without xml没有xml的Android视图
【发布时间】:2010-11-27 03:13:58
【问题描述】:

我需要创建没有 XML 的视图。我通过视图的getID 方法检索视图ID,但我得到了ResourceNotFoundException。我尝试使用setID 方法修复此ID,但它不再起作用了。

【问题讨论】:

  • 请详细点,贴一些代码,解释一下你在说什么id...
  • 完全同意,让我们看看一些代码,然后我们可以提供帮助。

标签: xml android view


【解决方案1】:

如果你没有声明你的视图并在布局 XML 文件中放置 id,你不能用它来检索它

findViewById(int)

如果您在没有 XML 的情况下创建视图,则应该在没有资源 ID 的情况下对其进行管理。您只需创建视图并为其命名,然后使用该名称对其进行操作。

您始终可以将它的引用传递给其他类,或者通过创建它的类使其可访问。

您仍然不想在 XML 中声明它吗?通常,当您开始一个项目时,您看不到如何使用 XML 布局做某事,并选择以编程方式创建大多数视图。在您推进项目或积累更多经验后,几乎在所有情况下,您都会发现您可以使用 XML 完成。

【讨论】:

  • 不幸的是,我不能使用 XML 布局...实现原因...我的问题是我想使用一个 ListView 填充了一个 ArrayAdapater ant ArrayAdapter 构造函数需要一个视图 ID!跨度>
  • 好吧,在这种情况下,使用 View 类的 setId(int) 方法。
  • 这就是我所做的,但我在运行时得到了 ResourceNotFoundException
【解决方案2】:

我认为问题如下。 当您调用findViewById() 时,它会在显示树中搜索该视图。因此,要从树中获取视图,您应该已经使用函数 addView() 将视图添加到树中。如果您还没有这样做,它可能无法在树中找到视图。

【讨论】:

    【解决方案3】:

    这很容易。

    lv = new ListView(this); lv.setId(android.R.layout.simple_list_item_1);

    SimpleCursorAdapter ca = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, c, from, to);

    【讨论】:

      【解决方案4】:

      如果您尝试打印视图的getId(int),您是否获得了有效的 ID?

      尝试在正确的上下文中使用findViewById(int),例如yourContext.findViewById(int);

      【讨论】:

      • 是的,我获得了我在 setID 方法中指定的 id,但是 findViewByID 返回异常(ResourceNotFound)
      • 尝试使用 yourActivity.findViewById(int);或 yourActivity.getBaseContext().findViewById 来查找视图。如果这不起作用,我认为您必须在某处引用创建的视图,以便您立即获得手头的视图
      猜你喜欢
      • 1970-01-01
      • 2010-11-15
      • 2016-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多