没有xml的Android视图

Posted

技术标签:

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

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

【问题讨论】:

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

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

findViewById(int)

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

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

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

【讨论】:

不幸的是,我不能使用 XML 布局...实现原因...我的问题是我想使用一个 ListView 填充了一个 ArrayAdapater ant ArrayAdapter 构造函数需要一个视图 ID!跨度> 好吧,在这种情况下,使用 View 类的 setId(int) 方法。 这就是我所做的,但我在运行时得到了 ResourceNotFoundException 看看这里:groups.google.com/group/android-developers/browse_thread/thread/…【参考方案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 来查找视图。如果这不起作用,我认为您必须在某处引用创建的视图,以便您立即获得手头的视图

以上是关于没有xml的Android视图的主要内容,如果未能解决你的问题,请参考以下文章

eclipse 中打开android的xml文件为啥没有视图显示

将视图恢复到原始 xml 状态

从 XML 膨胀自定义视图会创建 Illegalstateexception(Android, Java)

xml android中无法访问自定义视图属性

android: 一个新的 GUI 问题 - 如何声明 viewGroup,没有布局 XML 文件?

Android 中的日历视图