【发布时间】:2010-11-27 03:13:58
【问题描述】:
我需要创建没有 XML 的视图。我通过视图的getID 方法检索视图ID,但我得到了ResourceNotFoundException。我尝试使用setID 方法修复此ID,但它不再起作用了。
【问题讨论】:
-
请详细点,贴一些代码,解释一下你在说什么id...
-
完全同意,让我们看看一些代码,然后我们可以提供帮助。
我需要创建没有 XML 的视图。我通过视图的getID 方法检索视图ID,但我得到了ResourceNotFoundException。我尝试使用setID 方法修复此ID,但它不再起作用了。
【问题讨论】:
如果你没有声明你的视图并在布局 XML 文件中放置 id,你不能用它来检索它
findViewById(int)
如果您在没有 XML 的情况下创建视图,则应该在没有资源 ID 的情况下对其进行管理。您只需创建视图并为其命名,然后使用该名称对其进行操作。
您始终可以将它的引用传递给其他类,或者通过创建它的类使其可访问。
您仍然不想在 XML 中声明它吗?通常,当您开始一个项目时,您看不到如何使用 XML 布局做某事,并选择以编程方式创建大多数视图。在您推进项目或积累更多经验后,几乎在所有情况下,您都会发现您可以使用 XML 完成。
【讨论】:
我认为问题如下。
当您调用findViewById() 时,它会在显示树中搜索该视图。因此,要从树中获取视图,您应该已经使用函数 addView() 将视图添加到树中。如果您还没有这样做,它可能无法在树中找到视图。
【讨论】:
这很容易。
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);
【讨论】:
如果您尝试打印视图的getId(int),您是否获得了有效的 ID?
尝试在正确的上下文中使用findViewById(int),例如yourContext.findViewById(int);
【讨论】: